上传单个文件:

    public static void uploadFile(final File file, final String url, final Handler handler, final HttpCallbackListener listener){        new Thread(new Runnable() {            @Override            public void run() {                String BOUNDARY = UUID.randomUUID().toString(); //边界标识 随机生成                String PREFIX = "--" , LINE_END = "\r\n";                String CONTENT_TYPE = "multipart/form-data"; //内容类型                try {                    URL httpUrl = new URL(url);                    HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();                    conn.setReadTimeout(5000);                    conn.setConnectTimeout(5000);                    conn.setDoInput(true); //允许输入流                    conn.setDoOutput(true); //允许输出流                    conn.setUseCaches(false); //不允许使用缓存                    conn.setRequestMethod("POST"); //请求方式                    conn.setRequestProperty("Charset", "UTF-8");                    //设置编码                    conn.setRequestProperty("connection", "keep-alive");                    conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);                    if(file!=null) {                        OutputStream outputSteam=conn.getOutputStream();                        DataOutputStream dos = new DataOutputStream(outputSteam);                        StringBuffer sb = new StringBuffer();                        sb.append(PREFIX);                        sb.append(BOUNDARY);                        sb.append(LINE_END);                        sb.append("Content-Disposition: form-data; name=\"img\"; filename=\"" + file.getName()+"\""+LINE_END);                        sb.append("Content-Type: application/octet-stream; charset="+ "UTF-8" +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){                            listener.onFinish(res);                        }                    }                } catch (MalformedURLException e)                { e.printStackTrace(); }                catch (IOException e)                { e.printStackTrace(); }                return;            }        }).start();    }

上传多个文件:

public static void uploadFile(final List files, final String url, final Handler handler, final HttpCallbackListener listener){        new Thread(new Runnable() {            @Override            public void run() {                String BOUNDARY = UUID.randomUUID().toString(); //边界标识 随机生成                String PREFIX = "--" , LINE_END = "\r\n";                String CONTENT_TYPE = "multipart/form-data"; //内容类型                try {                    URL httpUrl = new URL(url);                    HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();                    conn.setReadTimeout(5000);                    conn.setConnectTimeout(5000);                    conn.setDoInput(true); //允许输入流                    conn.setDoOutput(true); //允许输出流                    conn.setUseCaches(false); //不允许使用缓存                    conn.setRequestMethod("POST"); //请求方式                    conn.setRequestProperty("Charset", "UTF-8");                    //设置编码                    conn.setRequestProperty("connection", "keep-alive");                    conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);               //     if(files.size()!= 0) {                        /** * 当文件不为空,把文件包装并且上传 */                        OutputStream outputSteam=conn.getOutputStream();                        DataOutputStream dos = new DataOutputStream(outputSteam);                        for(int i = 0; i < files.size(); i++){                            StringBuffer sb = new StringBuffer();                            sb.append(PREFIX);                            sb.append(BOUNDARY);                            sb.append(LINE_END);                            sb.append("Content-Disposition: form-data; name=\"img" + i + "\"; filename=\"" + files.get(i).getName()+"\""+LINE_END);                            //sb.append("Content-Type: application/octet-stream; charset="+ "UTF-8" +LINE_END);                            sb.append(LINE_END);                            dos.write(sb.toString().getBytes());                            InputStream is = new FileInputStream(files.get(i));                            byte[] bytes = new byte[1024];                            int len = -1;                            while((len=is.read(bytes))!=-1) {                                dos.write(bytes, 0, len);                            }                             dos.write(LINE_END.getBytes());                            is.close();                      }                        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){                            listener.onFinish(res);                        }                 } catch (MalformedURLException e)                { e.printStackTrace(); }                catch (IOException e)                { e.printStackTrace(); }                return;            }        }).start();    }

注意填写字节流的时候与单张图片的区别。

更多相关文章

  1. Android写文件到SDCard的一般过程和代码
  2. Android 获取本地音乐文件
  3. Android播放在线音乐文件
  4. 文件读写
  5. Android读取Txt文件
  6. Android文件递归遍历
  7. android 不使用布局文件,完全由代码控制布局实例
  8. Android 删除SD卡文件和文件及创建文件夹和文件

随机推荐

  1. android @override 报错
  2. ScrollView源码分析
  3. Script to make ffmepg for android
  4. 运行时获取Android(安卓)API版本
  5. Android(安卓)TelephonyManager类的介绍
  6. TextSwitcher切换动画
  7. AndroidManifest文件(部分)
  8. MyNotes(ContentProvider实例)
  9. android跑马灯
  10. AlertDialog对话框-自定义View