当前位置: 首页 > 知识库问答 >
问题:

服务器端上载到BlobStore-Java Google Appengine

琴俊人
2023-03-14

我在服务器(gae)中创建数据,并希望将其存储在BlobStore中。我看到了很多关于如何实现这一点的答案给客户机一个BlobStore URL,但是没有客户机或HTTP请求:这只是一个异步任务。

>

  • 那么我想我应该使用createUploadUrl(),而不是将此URL提供给客户机,而是通过URL获取从我的代码HTTP将数据发布给它。这看起来很奇怪,不是有另外一个API吗?

    假设我想要在Blobstore中的文件已经存储在我的GCS默认桶中。我可以使用gcs位置“/gs/bucketname/file”告诉Blobstore关于它们吗?我试过这个

    
    GcsFilename filename = new GcsFilename(bucketName, fileId);
    String gcsKey = "/gs/" + bucketName + "/" + filename.getObjectName();
    BlobKey blobKey = blobstoreService.createGsBlobKey(gcsKey);
    GcsOutputChannel outputChannel = gcsService.createOrReplace(filename, GcsFileOptions.getDefaultInstance());
    ObjectOutputStream oout = new ObjectOutputStream(Channels.newOutputStream(outputChannel));
    oout.writeObject(myDataObjectToPersist);
    oout.close();
    
    // ...at some other point I have checked the file is correctly stored in
    // GCS and I can fetch it using /gs/bucket/fileId
    // but it doesn't seem to be in Blobstore, so when
    InputStream stream = new BlobstoreInputStream(new BlobKey(blobKey.keyString))
    // ... this gives a BlobstoreInputStream$BlobstoreIOException: BlobstoreInputStream received an invalid blob key...
    

    这是概念上的错误吗?比如,如果我使用GcsOutputChannel来保存它,即使我创建了BlobKey,我也不会从Blobstore中获取它,还是它可以工作,但我只是做错了什么?

    1K谢谢

  • 共有1个答案

    蓝慈
    2023-03-14

    为什么要将文件存储在blobstore中,而不是直接从GCS写入和读取它?

    是的,您可以为存储在GCS中的文件创建BlobKey,并且可以在某些blobstore API(如fetchData和serve)中使用该密钥,但遗憾的是,不是在所有API中都使用该密钥。一些blobstore API(如BlobStoreReinPutStream)依赖于BlobInfo,并且在使用GCS客户端时不创建该API。

     类似资料:
    • 当我尝试将对象内容上载到FTP服务器 [它的值从[T:InputFileUpload]组件中获取] 我的web浏览器中的加载指示器播放并且不会停止 调试时,我发现我的come在一行中冻结 但是我尝试了3个方法(如代码所示)来上载 ,但是所有方法仍然不工作 将文件上载到FTPServer控制器方法

    • 我想上传一个文件到不同的服务器使用卷曲。我读过许多类似的问题,但我没有得到任何解决我的问题。下面是我现在得到的代码: 当我运行此脚本时,它将保持运行200秒,并以以下方式响应: Sep 17 20:56:58 xxxxx vsftpd[2613]:[user]确定登录:客户端“yyyyy” Sep 17 20:56:58 xxxxx vsftpd[2618]:[用户]FTP响应:客户端“YYYYY

    • 在以下片段中,是blob键吗?

    • 我正在尝试通过Multer将文件上载到服务器。这段代码所做的只是创建文件夹,而不是文件。我还尝试使用github上的教程,但在前端我的代码也没有成功 代码AJAX 还有MAIN.JS 我从前端获得的console.log输出:

    • 问题内容: 我需要在服务器端(PHP)期间和AJAX调用中启动重新加载。我该怎么做呢。老实说,我认为它不受支持。 我当前的方法是使用PHP header()函数并将其捕获为来自AJAX调用的responseText,然后执行innerHTML添加。 但是,这在我的书中不是正确的重载,因为它不会启动onload函数。它似乎也是人为的,而不是“干净的”解决方案。 问题答案: 将命令/标志发送回您的Aj