0

我是 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);

实际上客户端被写得很长并且不能被修改,我想在服务器端识别一些东西只是为了找到扩展。

请帮忙,谢谢。

4

1 回答 1

1

Struts2 File Uploader 拦截器在上传文件时将内容类型信息传递给 Action 类,通过比较 contentType 和 MIME 类型可以很容易地找到文件类型。

如果您想创建一个以键为内容类型和文件类型为其值的地图,例如

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

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

于 2012-07-27T06:28:47.437 回答