当前位置: 首页>>代码示例>>Golang>>正文


Golang blobstore.Create函数代码示例

本文整理汇总了Golang中appengine/blobstore.Create函数的典型用法代码示例。如果您正苦于以下问题:Golang Create函数的具体用法?Golang Create怎么用?Golang Create使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了Create函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: Upload

func (photo *Photo) Upload(r *http.Request) (err error) {
	c := appengine.NewContext(r)

	blob, err := blobstore.Create(c, r.Header.Get("X-File-Type"))
	if err != nil {
		return
	}

	defer r.Body.Close()
	//body, err := ioutil.ReadAll(r.Body)
	var buf bytes.Buffer
	io.Copy(&buf, r.Body)
	_, err = blob.Write(buf.Bytes())
	if err != nil {
		return
	}

	_ = blob.Close()
	key, err := blob.Key()
	if err != nil {
		return
	}

	photo.Blob = string(key)

	err = photo.CreateThumb(r, buf)
	if err != nil {
		log.Println(err)
		err = blobstore.Delete(c, key)
		err = errors.New("Failed to upload image")
	}

	return
}
开发者ID:ninnemana,项目名称:ninneman.org,代码行数:34,代码来源:h_photos.go

示例2: PutInBlobstore

func PutInBlobstore(c appengine.Context, toStore interface{}) (appengine.BlobKey, error) {
	//TODO: check capabilities
	var k appengine.BlobKey
	var data bytes.Buffer
	enc := gob.NewEncoder(&data)
	err := enc.Encode(toStore)
	if err != nil {
		c.Errorf("Datastore - PutInBlobstore - error 1 - %s", err)
		return k, err
	}

	w, err := blobstore.Create(c, "application/octet-stream")
	if err != nil {
		c.Errorf("Datastore - PutInBlobstore - error 2 - %s", err)
		return k, err
	}
	_, err = w.Write(data.Bytes())
	if err != nil {
		c.Errorf("Datastore - PutInBlobstore - error 3 - %s", err)
		return k, err
	}
	err = w.Close()
	if err != nil {
		c.Errorf("Datastore - PutInBlobstore - error 4 - %s", err)
		return k, err
	}
	k, err = w.Key()
	if err != nil {
		c.Errorf("Datastore - PutInBlobstore - error 5 - %s", err)
	}
	return k, err
}
开发者ID:ThePiachu,项目名称:GAE-Go-Datastore,代码行数:32,代码来源:BlobstoreInterface.go

示例3: saveBlob

func saveBlob(context appengine.Context, mimeType string, saveFunc func(*blobstore.Writer) error) (appengine.BlobKey, error) {
	var blobWriter *blobstore.Writer

	if w, err := blobstore.Create(context, mimeType); err == nil {
		blobWriter = w
	} else {
		return "", err
	}

	if err := saveFunc(blobWriter); err != nil {
		return "", err
	}

	if err := blobWriter.Close(); err != nil {
		return "", err
	}

	if k, err := blobWriter.Key(); err == nil {
		return k, nil
	} else {
		return "", err
	}

	return "", nil
}
开发者ID:dbratus,项目名称:impack,代码行数:25,代码来源:blob_store.go

示例4: Import

func (c Creature) Import(context appengine.Context) {
	if c.Exists(context) {
		return
	}

	// Fetch the source contents
	client := urlfetch.Client(context)
	resp, err := client.Get(c.Source)
	if err != nil {
		panic(err)
	}

	defer resp.Body.Close()

	data, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}

	// Store the Blob
	writer, _ := blobstore.Create(context, "image/jpeg")
	writer.Write(data)
	writer.Close()
	c.BlobKey, _ = writer.Key()

	c.Save(context)
}
开发者ID:shaunduncan,项目名称:goplacecreature,代码行数:27,代码来源:model.go

示例5: handleUpload

func handleUpload(r *http.Request, p *multipart.Part) (fi *FileInfo) {
	fi = &FileInfo{
		Name: p.FileName(),
		Type: p.Header.Get("Content-Type"),
	}
	if !fi.ValidateType() {
		return
	}
	defer func() {
		if rec := recover(); rec != nil {
			log.Println(rec)
			fi.Error = rec.(error).Error()
		}
	}()
	lr := &io.LimitedReader{R: p, N: MAX_FILE_SIZE + 1}
	context := appengine.NewContext(r)
	w, err := blobstore.Create(context, fi.Type)
	defer func() {
		w.Close()
		fi.Size = MAX_FILE_SIZE + 1 - lr.N
		fi.Key, err = w.Key()
		check(err)
		if !fi.ValidateSize() {
			err := blobstore.Delete(context, fi.Key)
			check(err)
			return
		}
		delayedDelete(context, fi)
		fi.CreateUrls(r, context)
	}()
	check(err)
	_, err = io.Copy(w, lr)
	return
}
开发者ID:omairrazam,项目名称:bapp,代码行数:34,代码来源:main.go

示例6: uploadBlob

func uploadBlob(w http.ResponseWriter, r *http.Request) {
	bodyData, error := ioutil.ReadAll(r.Body)
	fileType := r.URL.Query()["type"][0]

	var mimeType string

	if fileType == "png" {
		mimeType = "image/png"
	} else {
		mimeType = "application/pdf"
	}

	context := appengine.NewContext(r)

	writer, error := blobstore.Create(context, mimeType)
	if error != nil {
		return
	}

	_, error = writer.Write(bodyData)
	if error != nil {
		return
	}

	error = writer.Close()
	if error != nil {
		return
	}

	var k appengine.BlobKey
	k, _ = writer.Key()

	encoder := json.NewEncoder(w)
	encoder.Encode(&UploadBlobResponse{Key: string(k)})
}
开发者ID:mufniarz,项目名称:OLMC,代码行数:35,代码来源:web.go

示例7: loadImage

func loadImage(c appengine.Context, f *Feed) string {
	s := f.Link
	if s == "" {
		s = f.Url
	}
	u, err := url.Parse(s)
	if err != nil {
		return ""
	}
	u.Path = "/favicon.ico"
	u.RawQuery = ""
	u.Fragment = ""

	g := goon.FromContext(c)
	i := &Image{Id: u.String()}
	if err := g.Get(i); err == nil {
		return i.Url
	}
	client := urlfetch.Client(c)
	r, err := client.Get(u.String())
	if err != nil || r.StatusCode != http.StatusOK || r.ContentLength == 0 {
		return ""
	}
	b, err := ioutil.ReadAll(r.Body)
	r.Body.Close()
	if err != nil {
		return ""
	}
	buf := bytes.NewBuffer(b)
	_, t, err := image.DecodeConfig(buf)
	if err != nil {
		t = "application/octet-stream"
	} else {
		t = "image/" + t
	}
	w, err := blobstore.Create(c, t)
	if err != nil {
		return ""
	}
	if _, err := w.Write(b); err != nil {
		return ""
	}
	if w.Close() != nil {
		return ""
	}
	i.Blob, _ = w.Key()
	su, err := aimage.ServingURL(c, i.Blob, &aimage.ServingURLOptions{Size: 16})
	if err != nil {
		if err = blobstore.Delete(c, i.Blob); err != nil {
			c.Errorf("blob delete err: %v", err)
		}
		return ""
	}
	i.Url = su.String()
	g.Put(i)
	return i.Url
}
开发者ID:Ranerg,项目名称:goread,代码行数:57,代码来源:utils.go

示例8: UpdateServingLogoUrl

func UpdateServingLogoUrl(w http.ResponseWriter, r *http.Request) {
	c := appengine.NewContext(r)
	const batch = 50
	page, _ := strconv.Atoi(r.FormValue("pg"))
	if page < 1 {
		page = 1
	}
	offset := batch * (page - 1)
	q := datastore.NewQuery("EmpLogo").Offset(offset).Order("IdEmp").Limit(batch)
	n, _ := q.Count(c)
	for i := q.Run(c); ; {
		var e model.Image
		key, err := i.Next(&e)
		if err == datastore.Done {
			break
		}

		// Se crea la URL para servir la oferta desde el CDN, si no se puede
		// se deja en blanco
		var imgprops image.ServingURLOptions
		imgprops.Secure = true
		imgprops.Size = 180
		imgprops.Crop = false
		if e.Sp4 == "" && e.IdEmp != "" {
			var blobkey appengine.BlobKey
			blob, err := blobstore.Create(c, "image/jpeg")
			if err != nil {
				c.Errorf("blobstore Create: %v", e.IdEmp)
			}
			_, err = blob.Write(e.Data)
			if err != nil {
				c.Errorf("blobstore Write: %v", e.IdEmp)
			}
			err = blob.Close()
			if err != nil {
				c.Errorf("blobstore Close: %v", e.IdEmp)
			}
			blobkey, err = blob.Key()
			if err != nil {
				c.Errorf("blobstore Key Gen: %v", e.IdEmp)
			}
			if url, err := image.ServingURL(c, blobkey, &imgprops); err != nil {
				c.Errorf("Cannot construct EmpLogo ServingURL : %v", e.IdEmp)
			} else {
				e.Sp3 = string(blobkey)
				e.Sp4 = url.String()
			}
			_, err = datastore.Put(c, key, &e)
			if err != nil {
				c.Errorf("PutEmpLogo(); Error al intentar actualizar Emplogo : %v", e.IdEmp)
			}
		}
	}
	c.Infof("UpdateServingLogoUrl() Pagina: %d, actualizados: %d, del %d al %d", page, n, offset, offset+n)
	return
}
开发者ID:clicker360,项目名称:ebfmex-pub,代码行数:56,代码来源:updtlogourl.go

示例9: saveFile

func saveFile(c appengine.Context, b []byte) (appengine.BlobKey, error) {
	w, err := blobstore.Create(c, "application/json")
	if err != nil {
		return "", err
	}
	if _, err := w.Write(b); err != nil {
		return "", err
	}
	if err := w.Close(); err != nil {
		return "", err
	}
	return w.Key()
}
开发者ID:baijum,项目名称:goread,代码行数:13,代码来源:user.go

示例10: createBlob

// createBlob stores a blob in the blobstore.
func createBlob(c appengine.Context, r io.Reader, contentType string) (appengine.BlobKey, error) {
	w, err := blobstore.Create(c, contentType)
	if err != nil {
		return "", err
	}
	if _, err := io.Copy(w, r); err != nil {
		return "", err
	}
	if err := w.Close(); err != nil {
		return "", err
	}
	return w.Key()
}
开发者ID:TheAustrianPro,项目名称:overlay-tiler,代码行数:14,代码来源:util.go

示例11: ReceiveBlob

func (sto *appengineStorage) ReceiveBlob(br *blobref.BlobRef, in io.Reader) (sb blobref.SizedBlobRef, err os.Error) {
	if sto.ctx == nil {
		err = errNoContext
		return
	}

	var b bytes.Buffer
	hash := br.Hash()
	written, err := io.Copy(io.MultiWriter(hash, &b), in)
	if err != nil {
		return
	}

	if !br.HashMatches(hash) {
		err = blobserver.ErrCorruptBlob
		return
	}
	mimeType := "application/octet-stream"
	bw, err := blobstore.Create(sto.ctx, mimeType)
	if err != nil {
		return
	}
	written, err = io.Copy(bw, &b)
	if err != nil {
		// TODO(bradfitz): try to clean up; close it, see if we can find the key, delete it.
		return
	}
	err = bw.Close()
	if err != nil {
		// TODO(bradfitz): try to clean up; see if we can find the key, delete it.
		return
	}
	bkey, err := bw.Key()
	if err != nil {
		return
	}

	var ent blobEnt
	ent.BlobRefStr = br.String()
	ent.Size = written
	ent.BlobKey = bkey

	dkey := datastore.NewKey(sto.ctx, blobKind, br.String(), 0, nil)
	_, err = datastore.Put(sto.ctx, dkey, &ent)
	if err != nil {
		blobstore.Delete(sto.ctx, bkey) // TODO: insert into task queue on error to try later?
		return
	}

	return blobref.SizedBlobRef{br, written}, nil
}
开发者ID:ipeet,项目名称:camlistore,代码行数:51,代码来源:storage.go

示例12: newBlob

func newBlob(c appengine.Context, p []byte) (appengine.BlobKey, error) {
	var k appengine.BlobKey
	w, err := blobstore.Create(c, "text/plain")
	if err != nil {
		return k, err
	}
	_, err = w.Write(p)
	if err != nil {
		return k, err
	}
	err = w.Close()
	if err != nil {
		return k, err
	}
	return w.Key()
}
开发者ID:henglinli,项目名称:goblog,代码行数:16,代码来源:goblog.go

示例13: fetch

func fetch(w http.ResponseWriter, r *http.Request) {

	c := appengine.NewContext(r)

	imageUrl := r.FormValue("image")
	c.Infof("THIS IS IMAGE URL %v", imageUrl)
	client := urlfetch.Client(c)
	resp, err := client.Get(imageUrl)
	if error3(err, c, w) {
		return
	}

	blob, err := blobstore.Create(c, resp.Header.Get("Content-Type"))
	if error3(err, c, w) {
		return
	}
	written, err := io.Copy(blob, resp.Body)
	if error3(err, c, w) {
		return
	}
	if written < 100 {
		c.Infof("image is too small %v", written)
		return
	}
	err = blob.Close()
	if error3(err, c, w) {
		return
	}

	blobkey, err := blob.Key()
	if error3(err, c, w) {
		return
	}

	thumbnailUrl, err := image.ServingURL(c, blobkey, &image.ServingURLOptions{Size: 100})
	if error3(err, c, w) {
		return
	}
	t := thumbnailUrl.String()
	errr := channel.Send(c, "qwerty", t)
	if error3(errr, c, w) {
		return
	}
	// c.Infof("THIS IS IMAGE URL %v", t)
}
开发者ID:janjiss,项目名称:go_meetup,代码行数:45,代码来源:hello.go

示例14: images2urls

func (m *Message) images2urls(c appengine.Context) {
	urlc := make(chan string)
	for _, im := range m.images {
		go func(img *img_attachment) {
			w, err := blobstore.Create(c, img.Type)
			if err != nil {
				urlc <- err.Error()
				return
			}
			_, err = w.Write(img.Data)
			if err != nil {
				urlc <- err.Error()
				return
			}
			err = w.Close()
			if err != nil {
				urlc <- err.Error()
				return
			}
			key, err := w.Key()
			if err != nil {
				urlc <- err.Error()
				return
			}
			url, err := image.ServingURL(c, key, &image.ServingURLOptions{Secure: false, Size: 0, Crop: false})
			if err != nil {
				urlc <- err.Error()
				return
			}
			urlc <- url.String()
		}(&im)
	}

	imagescnt := len(m.images)
	m.ImageUrls = make([]string, 0, imagescnt)
	for i := 0; i < imagescnt; i++ {
		u := <-urlc
		if strings.HasPrefix(u, "http") {
			m.ImageUrls = append(m.ImageUrls, u)
		} else {
			c.Errorf("Error converting image to url: %v", u)
		}
	}
	return
}
开发者ID:vidoss,项目名称:goinbox,代码行数:45,代码来源:inmail.go

示例15: handleUpload

func handleUpload(r *http.Request, p *multipart.Part) (fi *FileInfo) {
	fi = &FileInfo{
		Name: p.FileName(),
		Type: p.Header.Get("Content-Type"),
	}
	if !fi.ValidateType() {
		return
	}
	defer func() {
		if rec := recover(); rec != nil {
			log.Println(rec)
			fi.Error = rec.(os.Error).String()
		}
	}()
	var b bytes.Buffer
	lr := &io.LimitedReader{p, MAX_FILE_SIZE + 1}
	context := appengine.NewContext(r)
	w, err := blobstore.Create(context, fi.Type)
	defer func() {
		w.Close()
		fi.Size = MAX_FILE_SIZE + 1 - lr.N
		fi.Key, err = w.Key()
		check(err)
		if !fi.ValidateSize() {
			err := blobstore.Delete(context, fi.Key)
			check(err)
			return
		}
		delayedDelete(context, fi)
		if b.Len() > 0 {
			fi.CreateThumbnail(&b, context)
		}
		fi.CreateUrls(r, context)
	}()
	check(err)
	var wr io.Writer = w
	if imageTypes.MatchString(fi.Type) {
		wr = io.MultiWriter(&b, w)
	}
	_, err = io.Copy(wr, lr)
	return
}
开发者ID:steliomo,项目名称:jQuery-File-Upload,代码行数:42,代码来源:main.go


注:本文中的appengine/blobstore.Create函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。