Struts2 如何从Struts多部分请求包装器获取原始文件

Struts2 如何从Struts多部分请求包装器获取原始文件,struts2,Struts2,有谁能帮我从Struts2 MultiPartRequestWrapper中获取真实的文件名吗 MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) ServletActionContext.getRequest(); Enumeration fileParameterNames = multiWrapper.getFileParameterNames(); if(fileParameterNames.hasM

有谁能帮我从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_xxxxxxxx.tmp的tempfile

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


提前谢谢你的帮助。

你为什么要这么做

请参阅和页。您只需提供适当的操作属性:

public void setUploaded(File myDoc);
public void setUploadedContentType(String contentType);
public void setUploadedFileName(String filename);
并使用默认堆栈中包含的文件上载拦截器


注意,不同的浏览器发送不同的信息;有些仅发送原始文件名,而有些发送完整路径。

您必须使用:
multiWrapper.getFileNames(“文件”)[0]

其中“file”是文件控件的名称

var fd = new FormData();
fd.append('file', files[i]);

嗨,戴夫,谢谢你的快速回复。但是你好,戴夫,谢谢你的快速回复。我通过ajax文件上传插件提交文件。使用普通的servlet和apachefileupload api,我可以获得文件。当我用strut2实现同样的功能时,我得到的是空文件列表。这就是我使用MultipartRequestWrapper实现的原因。有了这个,我可以看到文件列表,但当我在文件列表中循环时,我得到了临时文件名,但我想要真正的文件名。有可能吗。如果您有一个表单,则上述解决方案有效。但是我必须在struts2中使用fileupload生成动态表单。请帮助。@venkatanaveen S2不知道这是否是Ajax请求;它只是看到一个请求。另一方面是不同的。但我不明白;你的问题是你可以看到原始文件名和上传的文件名——你想得到什么?有
getFileNames
getFileParameterNames
getFiles
getFileSystemNames
。嗨,戴夫,我想用原始文件名创建临时文件。如果您看到我的第一篇文章,我将使用getFiles方法获取文件。我正在浏览文件列表。我正在获取文件,但当我执行file.getName()时,它将提供上载\u xxxx.tmp文件。我知道这是文件的包装。枚举fileParameterNames=multiWrapper.getFileParameterNames();当我检查fileParameters时,我可以看到原始文件名、类型和大小。我想得到原始文件名。有可能吗。谢谢你的帮助。@venkatanaveen你说你有原始文件名;我不明白。如果需要,请重命名临时文件。虽然如果有人上传一个同名的文档,旧的就会消失,但通常最好有更多的唯一文件名。