在我的 web.xml 中,没有过滤器。 在我的HTML中,已经提到了输入字段中的name属性。 在解析HTTPRequest之前,我没有使用任何 getParameter()或 getAttribute() API。
毕竟,我仍然无法得到任何元素。 请解释原因?
我的MVC控制器:
@RequestMapping(value = {"/upload"}, method = RequestMethod.POST)
public void uploadFileHandler(HttpServletRequest request) throws Exception
{
// Check that we have a file upload request
boolean isMultipart = true;//ServletFileUpload.isMultipartContent(request);
if(true == isMultipart)
{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
FileItemIterator iter = upload.getItemIterator(request);
while (true == iter.hasNext())
{
FileItemStream item = iter.next();
String name = item.getFieldName();
InputStream stream = ((ServletRequest) item).getInputStream();
if (true == item.isFormField())
{
System.out.println("Form field " + name + " with value " + Streams.asString(stream) + " detected.");
}
else
{
String fileName = item.getName();
}
}
}
}
我的html文件:
var fileSelector = document.createElement('form');
fileSelector.setAttribute('id', 'uploadForm');
fileSelector.setAttribute('method', 'POST');
fileSelector.setAttribute('enctype', 'multipart/form-data');
var inputType = document.createElement('input');
inputType.setAttribute('type', 'file');
inputType.setAttribute('name', 'uploadedFile');
inputType.setAttribute('id','importFile');
fileSelector.appendChild(inputType);
Ajax电话:
$.ajax({
url: 'upload',
data: formData,
contentType: false,
processData: false,
cache: false,
type: 'POST',
success: function(data)
{
alert("upload success");
},
error: function(jqXHR, textStatus, errorThrown)
{
alert("upload fail");
}
});
答案 0 :(得分:0)
可能配置中存在一些冲突。您基本上混合了两个不同的文件上传API。第二个将只获得一个空流。如果你使用commons-fileupload流API,你可能需要在application.properties中添加spring.http.multipart.enabled = false如果你使用Spring启动。如果你想上传文件通过使用MultipartFile,您需要启用multipart。