gpt4 book ai didi

java - ReSTLet & MULTIPART_FORM_DATA 或通过 ReSTLet 将文件放在 Google App Engine 上的其他方式

转载 作者:搜寻专家 更新时间:2023-11-01 03:53:15 28 4
gpt4 key购买 nike

我试图通过 reSTLet 接收文件,但只得到完整的 MULTIPART_FORM_DATA。如何提取我的特定文件?

我找到了一些代码块,但它们的类型不可用... RESTlet: How to process multipart/form-data requests?

DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1000240);

// 2/ Create a new file upload handler
RestletFileUpload upload = new RestletFileUpload(factory);

我当前的代码:

@Put
public void handleUpload(Representation entity) {
if (entity !=null) {
if (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) {
Request restletRequest = getRequest();
Response restletResponse = getResponse();
HttpServletRequest servletRequest = ServletUtils.getRequest(restletRequest);
HttpServletResponse servletResponse = ServletUtils.getResponse(restletResponse);

try {
Upload2(restletRequest, entity);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

public void Upload2(Request req, Representation entity) throws IOException
{
...
GcsOutputChannel outputChannel = gcsService.createOrReplace(fileName, GcsFileOptions.getDefaultInstance());
ObjectOutputStream oout = new ObjectOutputStream(Channels.newOutputStream(outputChannel));
copy(entity.getStream(), oout);
oout.close();

用这种方法存储后我有类似的东西,我只想存储名称为“图片”的内容:

��z------WebKitFormBoundarysOvzWKPqyqW7DiTu
Content-Disposition: form-data; name="picture"; filename="_MG_4369.jpg"
Content-Type: image/jpeg

����*ExifII*

据我所知,还不支持解析多部分表单数据?但是必须有一个解决方案,通过reSTLet发送文件

我通过 postman 尝试了 chrome 的休息电话。仅在 multiparts 上支持文件。是否有将图像作为原始文本发送的可能解决方案?

最佳答案

您将需要添加 Exception 处理并处理 InputStream 并可能清理临时文件(请参阅 DiskFileItemFactory 文档)但是使用 org.reSTLet.ext.fileupload 库时,基础知识如下。

@Put
public void handleUpload(Representation entity) {
List<FileItem> items = new RestletFileUpload(new DiskFileItemFactory())
.parseRepresentation(representation);
for (FileItem item : items) {
if (!item.isFormField()) {
MediaType type = MediaType.valueOf(item.getContentType());
InputStream inputStream = item.getInputStream();
}
}
}

对于 gae 解决方案,请尝试将 DiskFileItemFactory 替换为 gwtupload.server.MemoryFileItemFactory

关于java - ReSTLet & MULTIPART_FORM_DATA 或通过 ReSTLet 将文件放在 Google App Engine 上的其他方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18161517/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com