0

こんにちは皆さん、これで私を助けてもらえますか? 現在、複数のファイルを Web API にアップロードできるアプリケーションを作成しています。現在、単一のファイルをアップロードできますが、複数のファイルをアップロードしようとすると、最初のファイルのみが正常にアップロードされ、破損していません。 Web サイトには引き続き表示されますが、破損しています。以下の私のコード (特にループ) が私のアプリケーションで間違った出力を与えるという奇妙な疑いがありますが、それを理解することはできません。私を助けてくれる人に感謝します。

protected Boolean doInBackground(String... arg0) 
{

    try 
        {

            JSONObject jObjectFileUpload = new JSONObject();

            FileBody localFileBody;
            MultipartEntity localMultipartEntity;

            HttpParams httpParameters            = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParameters, 15000);
            HttpConnectionParams.setSoTimeout(httpParameters, 15000);
            HttpPost httpPost                    = new HttpPost("http://sampleserversvr4.guru.com:0727/api/fileupload");
            HttpClient httpclient                = new DefaultHttpClient(httpParameters);
            httpPost.addHeader("Authorization","Basic "+ Base64.encodeToString((_username + ":" + _password).getBytes(),Base64.NO_WRAP));

            for (int i = 0; i < Constants.ARRAYLIST_URI.size(); i++) 
            {
                uri = Constants.ARRAYLIST_URI.get(i);
                file = new File(uri);
                mimetype = Constants.getMimeType(uri);
                filename = file.getName();
                localFileBody = new FileBody(file, mimetype);
                localMultipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
                try {
                    localMultipartEntity.addPart("name", new StringBody(filename));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                try {
                    localMultipartEntity.addPart("chunk", new StringBody("1"));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }

                localMultipartEntity.addPart("file data", localFileBody);
                httpPost.setEntity(localMultipartEntity);
                HttpResponse localHttpResponse = httpclient.execute(httpPost);

                Log.i("response upload", localHttpResponse.toString());
                Log.i("Multipart Entity", localMultipartEntity.toString());
            }




        } catch (ClientProtocolException e) 
            {
                e.printStackTrace();
                Log.e("fileUpload", "ClientProtocolException in callWebService(). " + e.getMessage());
            } catch (IOException e) 
                {
                    e.printStackTrace();
                    Log.e("fileUpload","IOException in callWebService(). " + e.getMessage());
                }

    return true;

}
4

1 に答える 1

0

HttpPost のインスタンスを作成すると、投稿の変更が 1 つだけになる場合があります。そのため、for ループで新しい HttpPost と HttpClient を設定します。for ループで HttpPost および HttpClient インスタンスを作成してから、もう一度試してください。

于 2013-08-07T06:38:29.090 に答える