原文 http://www.cnblogs.com/greatverve/archive/2011/12/23/android-upload.htmlpackage com.spring.sky.image.upload.network;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.UUID;import android.util.Log;/** *  * 上传工具类 * @author spring sky * Email:[email protected] * QQ:840950105 * MyName:石明政 */public class UploadUtil {    private static final String TAG = "uploadFile";    private static final int TIME_OUT = 10*1000;   //超时时间    private static final String CHARSET = "utf-8"; //设置编码    /**     * android上传文件到服务器     * @param file  需要上传的文件     * @param RequestURL  请求的rul     * @return  返回响应的内容     */    public static String uploadFile(File file,String RequestURL)    {        String result = null;        String  BOUNDARY =  UUID.randomUUID().toString();  //边界标识   随机生成        String PREFIX = "--" , LINE_END = "\r\n";         String CONTENT_TYPE = "multipart/form-data";   //内容类型                try {            URL url = new URL(RequestURL);            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            conn.setReadTimeout(TIME_OUT);            conn.setConnectTimeout(TIME_OUT);            conn.setDoInput(true);  //允许输入流            conn.setDoOutput(true); //允许输出流            conn.setUseCaches(false);  //不允许使用缓存            conn.setRequestMethod("POST");  //请求方式            conn.setRequestProperty("Charset", CHARSET);  //设置编码            conn.setRequestProperty("connection", "keep-alive");               conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);                         if(file!=null)            {                /**                 * 当文件不为空,把文件包装并且上传                 */                DataOutputStream dos = new DataOutputStream( conn.getOutputStream());                StringBuffer sb = new StringBuffer();                sb.append(PREFIX);                sb.append(BOUNDARY);                sb.append(LINE_END);                /**                 * 这里重点注意:                 * name里面的值为服务器端需要key   只有这个key 才可以得到对应的文件                 * filename是文件的名字,包含后缀名的   比如:abc.png                   */                                sb.append("Content-Disposition: form-data; name=\"img\"; filename=\""+file.getName()+"\""+LINE_END);                 sb.append("Content-Type: application/octet-stream; charset="+CHARSET+LINE_END);                sb.append(LINE_END);                dos.write(sb.toString().getBytes());                InputStream is = new FileInputStream(file);                byte[] bytes = new byte[1024];                int len = 0;                while((len=is.read(bytes))!=-1)                {                    dos.write(bytes, 0, len);                }                is.close();                dos.write(LINE_END.getBytes());                byte[] end_data = (PREFIX+BOUNDARY+PREFIX+LINE_END).getBytes();                dos.write(end_data);                dos.flush();                /**                 * 获取响应码  200=成功                 * 当响应成功,获取响应的流                   */                int res = conn.getResponseCode();                  Log.e(TAG, "response code:"+res);//                if(res==200)//                {                    Log.e(TAG, "request success");                    InputStream input =  conn.getInputStream();                    StringBuffer sb1= new StringBuffer();                    int ss ;                    while((ss=input.read())!=-1)                    {                        sb1.append((char)ss);                    }                    result = sb1.toString();                    Log.e(TAG, "result : "+ result);//                }//                else{//                    Log.e(TAG, "request error");//                }            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return result;    }}

更多相关文章

  1. android 之 读取本地json文件返回string
  2. android 使内容铺满全屏
  3. 3.Retrofit上传头像给后端
  4. Android Dialog 去除背景内容模糊
  5. android中利用pull解析xml文件
  6. Memory Analyzer(MAT)打开android eclipse Dump内存文件出现 Unkno
  7. Android文件读写包含SDCard
  8. android 按纽状态配置文件
  9. 2.Retrofit上传list数组给后端

随机推荐

  1. Android(安卓)kernel log 加上android lo
  2. Android Studio(九):引用jar及so文件
  3. android 实现日期选择器
  4. Android ueventd解析
  5. Android笔记---四大组件之Content Provid
  6. android 简单例子
  7. Android安全机制之反编译
  8. 《Android多功能日历教程》
  9. Android 第六天重置版_Activity
  10. PopupWindow的简单使用(结合RecyclerView)