请问任何人如何从Struts2 MultiPartRequestWrapper获取真实文件名。
MultiPartRequestWrapper multiWrapper =
(MultiPartRequestWrapper) ServletActionContext.getRequest();
Enumeration fileParameterNames = multiWrapper.getFileParameterNames();
if(fileParameterNames.hasMoreElements()){
String inputValue = (String) fileParameterNames.nextElement();
File[] files = multiWrapper.getFiles(inputValue);
for (File cf : files) {
System.out.println(cf.getParentFile().getName());
System.out.println("cf is : " + cf.getName());
System.out.println("cf is : " + cf.toURI().getPath());
File.createTempFile(cf.getName(),"");
}
}
我可以从“fileParameterNames”看到原始文件名,类型,大小但是当获取文件时我只能看到带有upload_xxxxxxxxx.tmp的tempfile。
如何从文件中获取原始文件名。
感谢您的帮助。
答案 0 :(得分:1)
你为什么这样做?
请参阅file upload FAQ和details页面。您需要做的就是提供适当的操作属性:
public void setUploaded(File myDoc);
public void setUploadedContentType(String contentType);
public void setUploadedFileName(String filename);
并使用文件上传拦截器,它包含在默认堆栈中。
请注意,不同的浏览器会发送不同的信息;有些只发送原始文件名,有些则发送完整路径。
答案 1 :(得分:0)
您必须使用:multiWrapper.getFileNames("file")[0]
其中“file”是文件控件的名称。
var fd = new FormData();
fd.append('file', files[i]);