String urlStr = "http://192.168.0.101/images/"; //给了读写的权限
private void HttpClientUpLoad(String pathImage)  //pathImage 路径也存在
    {
     String uploadMsg="";
HttpClient httpclient = new DefaultHttpClient();  
try{
     HttpPost httppost = new HttpPost(urlStr);
    
    File aFile = new File(pathImage);        FileEntity fileEty = new FileEntity(aFile, "binary/octet-stream");
    httppost.setEntity(fileEty);   
        httppost.addHeader("filename", aFile.getName());   
        HttpResponse response;   
        response = httpclient.execute(httppost);   
        Log.i("info -- response: ", response.getStatusLine().getReasonPhrase());   
           
        Header[] headers = response.getAllHeaders();   
        headers = response.getHeaders("resultcode");   
        if (headers[0].getValue().equals("0")) {   
            uploadMsg = "上传照片成功!";   
        } 
        }catch(Exception  ex)
        {
          uploadMsg = ex.getMessage();  
        }
        finally {   
            Toast.makeText(CameraPhotos.this, uploadMsg,   
                    Toast.LENGTH_LONG).show();   
            httpclient.getConnectionManager().shutdown();   
        } 
    }手机端怎么上传不了图片呢?请各位大哥大姐指点下,非常感谢

解决方案 »

  1.   

    自己封装了一个,有点滥,满足个人的需求。 复制进去有报错的,去掉就行了。 同时上传文件与参数的也有,但需要引入httpmime-4.1.1.jar。 服务端解析的时候也要到mime
    package com.lbschat.util;import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;import org.apache.http.HttpResponse;
    import org.apache.http.client.CookieStore;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.params.HttpClientParams;
    import org.apache.http.entity.BasicHttpEntity;
    import org.apache.http.entity.FileEntity;
    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.entity.mime.content.StringBody;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.cookie.BasicClientCookie;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.params.BasicHttpParams;
    import org.apache.http.params.HttpConnectionParams;
    import org.apache.http.params.HttpParams;
    import org.apache.http.protocol.HTTP;
    import org.apache.http.util.EntityUtils;import android.content.Context;
    import android.util.Log;public class UploadApacheUtil {
    private static UploadApacheUtil httpUpload;

    public static UploadApacheUtil getInstance(){

    if(httpUpload == null){
    httpUpload = new UploadApacheUtil();
    }
    return httpUpload;
    }

    private int timeout = 30 * 1000;
    private int readout = 60 * 1000;
    private int bufferSize = 8192;
    final public static boolean isShowLog = true;
    private DefaultHttpClient httpClient;

    private String LOG_TAG = "MyTag";private void init(){
    // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的) HttpParams params = new BasicHttpParams();

    // 设置连接超时和 Socket 超时,以及 Socket 缓存大小 HttpConnectionParams.setConnectionTimeout(params, timeout); HttpConnectionParams.setSoTimeout(params, readout); HttpConnectionParams.setSocketBufferSize(params, bufferSize);

    // 设置重定向,缺省为 true
    HttpClientParams.setRedirecting(params, true);

    // 设置 user agent
    //HttpProtocolParams.setUserAgent(params, userAgent); // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient httpClient = new DefaultHttpClient(params);

    }//同时发送文件及参数,服务端需要用Mine来获取
    public String post(String sUri , Map<String , String> maps, File file){
    try{

    if(isShowLog){
    Log.i(LOG_TAG, "post->multipart:" + sUri);
    }

    HttpPost request = new HttpPost(sUri);

    FileBody bin = new FileBody(file);
    MultipartEntity mpEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
    if(maps != null){
    for(Map.Entry<String, String> entrys : maps.entrySet()){
    mpEntity.addPart(entrys.getKey(), new StringBody(entrys.getValue()));
    }
    }
    mpEntity.addPart("file", bin);
    request.setEntity(mpEntity);


     
    HttpResponse httpResponse = httpClient.execute(request);

    int codeStatus = httpResponse.getStatusLine().getStatusCode();
    if(codeStatus != 200){

    return null;
    }

    String result = EntityUtils.toString(httpResponse.getEntity());

    if(isShowLog){
    Log.i(LOG_TAG, "post->result:" + result);
    }
    return result;

    } catch (Exception e) {

    }finally{

    }

    return null ;
    }}