Blob Store 响应 415 Unsupported Media Type
Blob Store responds with 415 Unsupported Media Type
我在 Google App Engine 上有一个 API 运行,它通过 App Engines 接收邮件功能通过邮件接收图像。
这意味着我无法将 Blob Store 与 JSP 一起使用,如 Google 所述 here as a typical use-case. Instead I upload the image to Blob Store using Retrofit。
这是有效的,因为 图像被上传到 Blob Store,但 Blob Store 响应 415 Unsupported Media Type
。我还尝试上传其他文件类型并使用 Postman,但 Blob Store 一直响应 415 Unsupported Media Type
,即使请求成功。
改造
邮件接收者
String uploadUrl = BlobstoreServiceFactory.getBlobstoreService()
.createUploadUrl("/api/camera/blobstore-response");
uploadUrl = uploadUrl.split("appspot.com/")[1]; // Remove the base URL.
TypedOutput body = new TypedOutput() {
@Override
public String fileName() {
return fileName;
}
@Override
public String mimeType() {
return "image/jpeg";
}
@Override
public long length() {
return -1;
}
@Override
public void writeTo(OutputStream outputStream) throws IOException {
ByteStreams.copy(inputStream, outputStream);
}
};
blobStoreApiService.uploadImage(uploadUrl, body);
BlobStoreApiService
@Multipart
@POST("/{path}")
Object uploadImage(@Path(value = "path", encode = false) String uploadPath, @Part("file") TypedOutput image);
邮递员[=31=]
有效,但收到 415 Unsupported Media Type
与上述请求相同,但添加了 Content-Type
header。这不起作用(400 Bad Request
)
当调用 Blob 存储以将 URL 发送到您应该发出上传请求的位置时,您向处理程序添加回调 URL(在本例中为 /api/camera/blobstore-response
)保存 Blob 后调用 Blob Store。像这样:
String uploadUrl = BlobstoreServiceFactory.getBlobstoreService().createUploadUrl("/api/camera/blobstore-response");
因此,当 Blob Store 响应 415 Unsupported Media Type
时,这实际上是 Blob Store 从回调处理程序获得的响应,即。调用 api/camera/blobstore
时 Blob Store 得到的响应。
解决方案 是创建一个处理程序 returns 2XX
并将 Blob Store 指向该端点。此端点必须处理包含多部分表单数据的 POST 请求。
我在 Google App Engine 上有一个 API 运行,它通过 App Engines 接收邮件功能通过邮件接收图像。
这意味着我无法将 Blob Store 与 JSP 一起使用,如 Google 所述 here as a typical use-case. Instead I upload the image to Blob Store using Retrofit。
这是有效的,因为 图像被上传到 Blob Store,但 Blob Store 响应 415 Unsupported Media Type
。我还尝试上传其他文件类型并使用 Postman,但 Blob Store 一直响应 415 Unsupported Media Type
,即使请求成功。
改造
邮件接收者
String uploadUrl = BlobstoreServiceFactory.getBlobstoreService()
.createUploadUrl("/api/camera/blobstore-response");
uploadUrl = uploadUrl.split("appspot.com/")[1]; // Remove the base URL.
TypedOutput body = new TypedOutput() {
@Override
public String fileName() {
return fileName;
}
@Override
public String mimeType() {
return "image/jpeg";
}
@Override
public long length() {
return -1;
}
@Override
public void writeTo(OutputStream outputStream) throws IOException {
ByteStreams.copy(inputStream, outputStream);
}
};
blobStoreApiService.uploadImage(uploadUrl, body);
BlobStoreApiService
@Multipart
@POST("/{path}")
Object uploadImage(@Path(value = "path", encode = false) String uploadPath, @Part("file") TypedOutput image);
邮递员[=31=]
有效,但收到 415 Unsupported Media Type
与上述请求相同,但添加了 Content-Type
header。这不起作用(400 Bad Request
)
当调用 Blob 存储以将 URL 发送到您应该发出上传请求的位置时,您向处理程序添加回调 URL(在本例中为 /api/camera/blobstore-response
)保存 Blob 后调用 Blob Store。像这样:
String uploadUrl = BlobstoreServiceFactory.getBlobstoreService().createUploadUrl("/api/camera/blobstore-response");
因此,当 Blob Store 响应 415 Unsupported Media Type
时,这实际上是 Blob Store 从回调处理程序获得的响应,即。调用 api/camera/blobstore
时 Blob Store 得到的响应。
解决方案 是创建一个处理程序 returns 2XX
并将 Blob Store 指向该端点。此端点必须处理包含多部分表单数据的 POST 请求。