0

post with file を使用して、画像ファイルを Web サイトにアップロードします。エラーメッセージが表示されました。何か提案をいただけますか? ありがとうシステム:android 4.0.3 phone:htc x

error information

E/dalvikvm(11952): Could not find class 'org.apache.http.entity.mime.content.FileBody', referenced from method tw.tcc.tsvs.www.FileUploadPost.FileUploadPostActivity$1.onClick

コード

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

private Button.OnClickListener jclove=new OnClickListener(){
public void onClick(View v) {
try {     
             //file_post
             File file = new File("/sdcard/android.jpg");
             try {
                  HttpClient client = new DefaultHttpClient();  
                  String postURL = "http://latest.tsd2497r1.ext.hipaas.hinet.net/";
                  HttpPost post = new HttpPost(postURL); 
                  FileBody bin = new FileBody(file);
                  MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  
                  reqEntity.addPart("myFile", bin);
                  post.setEntity(reqEntity);  
                  HttpResponse response = client.execute(post);  
                  HttpEntity resEntity = response.getEntity();  
                  if (resEntity != null) {    
                            Log.i("RESPONSE",EntityUtils.toString(resEntity));
                      }
             } catch (Exception e) {
                 e.printStackTrace();
             }


             //}
        } catch (Exception e) {
            e.printStackTrace();
        }       
    }
};
4

3 に答える 3

1

コードとエラーから、ビルド パスにhttpmime-4.0.jarファイルを追加するのを忘れていたと思います。

コード例:

HttpPost httpost = new HttpPost("url for upload file");

MultipartEntity entity = new MultipartEntity();
entity.addPart("myIdentifier", new StringBody("somevalue"));
entity.addPart("myAudioFile", new FileBody(File));

httpost.setEntity(entity);
HttpResponse response;
response = httpclient.execute(httpost);

このSOの質問の私の答えを見てください。

Androidで1回のリクエストで画像と音声をアップロードする

于 2012-07-25T09:58:48.053 に答える
0
For uploading you should check with MIME Headers and buffer for file upload.

You can try with code similar to given below :-


 DataOutputStream   dos = new DataOutputStream(conn.getOutputStream());


 String fName = uploadPath.substring(uploadPath
                                    .lastIndexOf("/") + 1);

                            dos.writeBytes(LINE_START + BOUNDRY + LINE_END);
                            dos.writeBytes("Content-Disposition: form-data; name=\"uploaded\";"
                                    + " filename=\"" + fName + "\"" + LINE_END);
                            dos.writeBytes("Content-Type: image/JPEG" + LINE_END);
                            dos.writeBytes(LINE_END);

                            // create a buffer of maximum size
                            bytesAvailable = fileInputStream.available();
                            bufferSize = Math.min(bytesAvailable, maxBufferSize);
                            buffer = new byte[bufferSize];

                            // read file and write it into form...
                            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
                            totalBytes = 0;

                            while (bytesRead > 0) {
                                totalBytes += bytesRead;
                                dos.write(buffer, 0, bufferSize);
                                bytesAvailable = fileInputStream.available();
                                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
                            }

                            // send multipart form data necesssary after file data...
                            dos.writeBytes(LINE_END);
                            dos.writeBytes(LINE_START + BOUNDRY + LINE_START + LINE_END);

                            // close streams
                            fileInputStream.close();
                            dos.flush();
                            dos.close();
于 2012-07-25T10:01:33.707 に答える
0

みんな、ありがとう。もっと学びます。以下のリンクは私にとって最も役に立ちました。
https://groups.google.com/forum/?fromgroups#!topic/android-developers/QQSWZ_sWdgU/discussion

httpmime.jar を使用する以外に、2 番目の方法はソース (*.java) を yourproject/src フォルダーにコピーすることです...最終的なディレクトリ構造は yourproject/src/org/apache/http/entity/mime/ のようにする必要があります...これらのライブラリとjarライブラリとソースファイルを混在させないでください...すべてがうまく機能するので、慎重に行ってください。

http://hc.apache.org/downloads.cgiからダウンロードできるソース コード (*.java) は
、HttpClient 4.2.1: SOURCE-->4.2.1.zip を選択します。

File file = new File("/sdcard/android.jpg");
try {
     HttpClient client = new DefaultHttpClient();
     String postURL = "http://192.168.12.90/album/upload.php"; //web site
     HttpPost post = new HttpPost(postURL);  
     FileBody bin = new FileBody(file);    
     MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
     reqEntity.addPart("upf", bin); // first reference name(upf) should be the same as server side
     post.setEntity(reqEntity);  
     HttpResponse response = client.execute(post); 
     HttpEntity resEntity = response.getEntity();  
     } catch (Exception e) {
       e.printStackTrace();
     }
    }

//server side php code
$Destdir="upload";
$tmp_filename=$_FILES['upf']['tmp_name'];//post reference(upf).It must be the same as addPart("upf"
$originalfilename=$_FILES['upf']['name'];//post reference(upf).It must be the same as addPart("upf"
$server_filename= $Destdir. "/" .basename($originalfilename);
move_uploaded_file($tmp_filename,$server_filename);
于 2012-07-26T06:14:21.357 に答える