Struts文件上传识别正确的扩展名而不是.tmp

时间:2012-07-27 05:43:47

标签: struts2 struts-1 struts-config struts-validation

我是Struts的新手,正在使用Struts进行文件上传。

客户端: 它是Java程序,通过使用apache HttpClient API来提供我的Strut应用程序 文件。 客户端根据需要有时会给我.wav文件和某个时间.zip文件,有时两者都可以。

服务器: Struts应用程序从客户端应用程序获取请求并上传文件。

在这里,问题出现在我上传文件时,它会使用“.tmp”扩展名上传,我想用客户端传递的相同扩展名上传。

或者我们可以通过其他方式检查客户端发送的文件的扩展名是什么....?

我遇到了这个问题但无法继续。

请找到附带的代码并告诉我我必须做什么修改:

服务器代码:

    MultiPartRequestWrapper multiWrapper=null;
    File baseFile=null;

    System.out.println("inside do post");

    multiWrapper = ((MultiPartRequestWrapper)request);


    Enumeration e = multiWrapper.getFileParameterNames();

    while (e.hasMoreElements()) {
        // get the value of this input tag
        String inputValue = (String) e.nextElement();

        // Get a File object for the uploaded File
        File[] file = multiWrapper.getFiles(inputValue);

        // If it's null the upload failed
        if (file != null) {


            FileInputStream fis=new FileInputStream(file[0]);

            System.out.println(file[0].getAbsolutePath());
            System.out.println(fis);

            int ch;
            while((ch=fis.read())!=-1){
                System.out.print((char)ch);
            }
        }

    }

    System.out.println("III :"+multiWrapper.getParameter("method"));

客户代码:

 HttpClient client = new HttpClient();
                  MultipartPostMethod mPost = new MultipartPostMethod(url);
                        File zipFile = new File("D:\\a.zip");
                        File wavFile = new File("D:\\b.wav");
                        mPost.addParameter("recipientFile", zipFile);
                        mPost.addParameter("promptFile", wavFile);
                        mPost.addParameter("method", "addCampaign");
  statusCode1 = client.executeMethod(mPost);

实际上客户端是长期编写的,无法修改,我想在服务器端识别某些内容,只是为了找到扩展名。

请帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

上传文件时Struts2 File Uploader拦截器将内容类型信息传递给Action类,并且可以通过将contentType与MIME类型进行比较,轻松找到文件类型。

如果你想创建一个地图类型和文件类型的地图类型和文件类型的地图,如

map.Add("image/bmp",".bmp", )
map.Add("image/gif",".gif", )
map.Add("image/jpeg",".jpeg", )

并且可以根据扩展名提供轻松获取类型。希望这对您有帮助。