0

私はStrutsを初めて使用し、Strutsを使用してファイルのアップロードに取り組んでいます。

クライアント:apache HttpClient APIを使用してStrutアプリにアクセスし、ファイルを提供するのはJavaプログラムです。クライアントは、必要に応じて、.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 に答える