如何从Struts Multipart Request Wrapper获取原始文件

时间:2011-12-21 00:47:10

标签: struts2

请问任何人如何从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。

如何从文件中获取原始文件名。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你为什么这样做?

请参阅file upload FAQdetails页面。您需要做的就是提供适当的操作属性:

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]);