gpt4 book ai didi

java - multipart/form-data 不适用于 servlet

转载 作者:行者123 更新时间:2023-12-01 19:11:10 25 4
gpt4 key购买 nike

我不太确定为什么带有标签 enctype="multipart/form-data"的 html 表单没有传递它应该传递的对象。 mozilla 和 firefox 就是这种情况。

对于IE的情况,例如,我使用html控件选择一个文件,它确实得到了它应该得到的东西。

现在我只想知道是否有任何替代方案可以用来通过 http 请求对象传递文件,因为 enctype="multipart/form-data"似乎存在一些兼容性问题,但我不太确定

如有任何建议,我们将不胜感激! :D

最佳答案

首先,您必须提供一些代码来展示您所做的事情,并了解出了什么问题。无论如何,我假设您必须使用 HTML 文件上传控件将文件上传到服务器。

文件上传或者说multipart/form-data编码类型支持在HttpServlet实现中没有实现。因此,request.getParameter() 不适用于 multipart/form-data。您必须使用为此提供支持的其他库。 Apache Commons File Upload就是一个很好的例子。他们的using fileupload指南将帮助您开始使用该库。这是一个简单的示例(根据文件上传指南编译)。

// Check that we have a file upload request
boolean isMultipart = ServletFileUpload.isMultipartContent(request);

if (isMultipart) {
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();

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

// Parse the request
List /* FileItem */ items = upload.parseRequest(request);

// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();

if (item.isFormField()) {
// Process form field.
String name = item.getFieldName();
String value = item.getString();
} else {
// Process uploaded file.
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();

if (writeToFile) {
File uploadedFile = new File("path/filename.txt");
item.write(uploadedFile);
}
}
}
} else {
// Normal request. request.getParameter will suffice.
}

关于java - multipart/form-data 不适用于 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8365631/

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