如何将js客户端的图像保存到blobstore

how to save a image from js client to blobstore?

本文关键字:图像 保存 blobstore 客户端 js      更新时间:2023-09-26

我想将浏览器中的图像保存到谷歌blobstore中。我已经尝试过:将我的img转换为base64字符串:

reader = new FileReader();
reader.readAsBinaryString(file);

调用我的Endpoint函数将其发送到谷歌应用程序引擎。

var request = gapi.client.helloworldendpoints.uploadImage({'imageData': __upload.imageData, 'fileName': __upload.fileName, 'mimeType': __upload.mimeType, 'size': __upload.size});
    request.execute(
            function (result) {
                console.log("Callback:");
                console.log(result);
            }
    );

我在Java中的端点是这样的:

 @ApiMethod(name = "uploadImage", path = "/uploadImage", httpMethod = "POST")
public ImageUploadRequest uploadImage(@Named("imageData") byte[] imageData, @Named("fileName") String fileName, @Named("mimeType") String mimeType, @Named("size") float size) { 
return new ImageUploadRequest(imageData, fileName, mimeType, size);
}

问题是,我的端点似乎无法处理base64的传输。我总是得到503后端错误

通过应用程序引擎将数据从js客户端发送到blobstore的最佳方式是什么?

UPDATE主要问题解决了。我设法上传了blob。

Javascript

var request = gapi.client.helloworldendpoints.uploadImage({
    'imageData': __upload.imageData, 
    'fileName': __upload.fileName, 
    'mimeType': __upload.mimeType, 
    'size': __upload.size
});

Java端点

public ImageUploadRequest uploadImage(
    Request imageData, 
    @Named("fileName") String fileName, 
    @Named("mimeType") String mimeType, 
    @Named("size") float size
) { ... }

请求只是这个

public class Request {
      public Blob image;
}

我的下一个问题是由于blobstorage只接受发送到servlet的数据,我如何从GAE的Java Endpoint向UploadServlet发送MultipartRequest以创建blobkey并将数据保存到blobstorage中?