2

このファイルを正しくアップロードしていますか? これが私のコードです:


削除されたコード

これは基本的に、ファイル (csv) を Web サーバーに送信する単なる非同期タスクです。

ステータス コード 400 が返されます :( 何が間違っているか知っている人はいますか?


編集: ステータス コード 411 が返されますが、コンテンツの長さを指定すると、ClientProtocolException が返されます。

ここに私のコードがあります:

UploadTask uploadtask;

    public class UploadTask extends AsyncTask<Void, byte[], Boolean> {

        HttpPost httppost;

        @Override
        protected Boolean doInBackground(Void... params) {
            Boolean result = false;
            String id = projectIDs.get((int) spinner.getSelectedItemId());

            Log.i("TAG", id);
            try {

                l(send(String.valueOf(id), "http://" + site
                        + "/restlet/position.csv?project=" + id,
                        "/csv.csv"));

            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return result;
        }

        private void entity(String id, String file) throws JSONException,
                UnsupportedEncodingException, FileNotFoundException {
            // Add your data
            File myFile = new File(Environment.getExternalStorageDirectory(),
                    file);

            FileEntity fileEntity = new FileEntity(myFile, "multipart/form-data;");
            fileEntity.setChunked(true);
            long len = fileEntity.getContentLength();
            httppost.getParams().setParameter("project", id);
            httppost.setEntity(fileEntity);

            //httppost.addHeader("Content-Length",String.valueOf(len));
            httppost.setHeader("Content-Length", String.valueOf(len));
        }

        private String send(String id, String URL, String file)
                throws ClientProtocolException, IOException, JSONException {

            l(URL);

            HttpResponse response = null;

            httppost = new HttpPost(URL);

            entity(id, file);

            response = httpclient.execute(httppost);

            Header[] head = response.getAllHeaders();

            String str = String.valueOf(response.getStatusLine()
                    .getStatusCode());

            response.getEntity().consumeContent();

            return str;
        }

    }
4

3 に答える 3

7

ここのこのコードは、ファイルをWebサーバーにアップロードするために機能しました:)何時間も苦労した後、私はそれを手に入れましたが、ApacheからMultipartEntity、StringBody、およびFileBodyをインポートする必要がありました

httppost = new HttpPost(URL);
MultipartEntity entity = new MultipartEntity();
entity.addPart("title", new StringBody("position.csv", Charset.forName("UTF-8")));
File myFile = new File(Environment.getExternalStorageDirectory(), file);
FileBody fileBody = new FileBody(myFile);
entity.addPart("file", fileBody);
httppost.setEntity(entity);
httppost.getParams().setParameter("project", id);
于 2012-06-15T08:49:25.157 に答える
2

ファイルをサーバーにアップロードするには、次のリンクを参照してください。

http://vikaskanani.wordpress.com/2011/01/11/android-upload-image-or-file-using-http-post-multi-part/

于 2012-06-15T12:51:14.193 に答える