【问题标题】:how can i upload a file in google cloud storage using GAE如何使用 GAE 在谷歌云存储中上传文件
【发布时间】:2012-12-21 05:57:01
【问题描述】:

在 GAE 中上传文件时,我可以使用如下代码,

 //here creating a blob store service
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
//here declaring the datastore service
   DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
//creating entity
   Entity emp = new Entity("Employee");
//set the property
   emp.setProperty("First Name", fname);
   emp.setProperty("Last Name", lname);
//storing the data in GAE
   datastore.put(Employee);

现在,如果我需要在谷歌云存储中进行相同的文件上传,我可以设置存储桶并打开通道,如下所示,

//Creating file service
FileService fileService = FileServiceFactory.getFileService();

//setting bucket name,object name & type
GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
       .setBucket(BUCKETNAME)
       .setKey(FILENAME)
       .setMimeType("text/html")
       .setAcl("public_read")
       .addUserMetadata("myfield1", "my field value");

//creating the new writable file 
 AppEngineFile writableFile =fileService.createNewGSFile(optionsBuilder.build());
//opening the lock and writing channel
boolean lock = false;
FileWriteChannel writeChannel = fileService.openWriteChannel(writableFile, lock);

在此之后,我不知道如何将文件存储在 Google 云存储中。我引用了这个开发人员页面Google Cloud Storage Java API Overview,但它只显示读取和写入对象而不上传文件。

请建议我将文件上传到 Google 云存储中。

感谢您的帮助。

【问题讨论】:

    标签: java google-app-engine google-cloud-storage


    【解决方案1】:

    类似这样的:

    UploadOptions uploadOptions = UploadOptions.Builder.withGoogleStorageBucketName("bucket");
    String uploadUrl = blobstoreService.createUploadUrl("/on_upload_success", uploadOptions));
    

    然后对那个 url 进行 POST。但是,然后在“/on_upload_success”处理程序中,您从 GS 获取文件的 BlobKey,而不是文件名(由于此错误 http://code.google.com/p/googleappengine/issues/detail?id=8337)。因此,您只能使用 blobkey 从 GAE 读取该数据。

    【讨论】:

    • 非常感谢 tuxSlayer,所以根据那个问题,将数据存储在 GS 中似乎没有用,因为我们无法读取它。我对吗?我们可以使用 GAE 存储本身,我们可以在其中进行读取和写入
    • 可以使用blobstoreService.serve(blobKey)(不是确切的代码)从 GAE 应用程序提供 GS 文件。
    • 但我可以从 GAE 本身读取相同的数据,为什么我需要 GS。
    • 嗨,伙计们..我实际上也在做同样的事情,但不了解 uploadURL 的事情......我想直接通过 java 代码而不是表单 URL 发送文件,我怎样才能达到同样的效果? ..我很困惑...任何帮助都会很棒!
    猜你喜欢
    • 1970-01-01
    • 2012-10-15
    • 2014-07-11
    • 2019-03-19
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多