zoukankan      html  css  js  c++  java
  • 通过HttpURLConnection 上传文件

    参考1:https://www.cnblogs.com/h--d/p/5638092.html

    package com.util;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.Iterator;
    import java.util.Map;
    
    /**
     * Java原生的API可用于发送HTTP请求,即java.net.URL、java.net.URLConnection,这些API很好用、很常用,
     * 但不够简便;
     * 
     * 1.通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection) 2.设置请求的参数 3.发送请求
     * 4.以输入流的形式获取返回内容 5.关闭输入流
     * 
     * @author H__D
     *
     */
    public class HttpConnectionUtil {
    
    
        /**
         * 多文件上传的方法
         * 
         * @param actionUrl:上传的路径
         * @param uploadFilePaths:需要上传的文件路径,数组
         * @return
         */
        @SuppressWarnings("finally")
        public static String uploadFile(String actionUrl, String[] uploadFilePaths) {
            String end = "
    ";
            String twoHyphens = "--";
            String boundary = "*****";
    
            DataOutputStream ds = null;
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader reader = null;
            StringBuffer resultBuffer = new StringBuffer();
            String tempLine = null;
    
            try {
                // 统一资源
                URL url = new URL(actionUrl);
                // 连接类的父类,抽象类
                URLConnection urlConnection = url.openConnection();
                // http的连接类
                HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
    
                // 设置是否从httpUrlConnection读入,默认情况下是true;
                httpURLConnection.setDoInput(true);
                // 设置是否向httpUrlConnection输出
                httpURLConnection.setDoOutput(true);
                // Post 请求不能使用缓存
                httpURLConnection.setUseCaches(false);
                // 设定请求的方法,默认是GET
                httpURLConnection.setRequestMethod("POST");
                // 设置字符编码连接参数
                httpURLConnection.setRequestProperty("Connection", "Keep-Alive");
                // 设置字符编码
                httpURLConnection.setRequestProperty("Charset", "UTF-8");
                // 设置请求内容类型
                httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
    
                // 设置DataOutputStream
                ds = new DataOutputStream(httpURLConnection.getOutputStream());
                for (int i = 0; i < uploadFilePaths.length; i++) {
                    String uploadFile = uploadFilePaths[i];
                    String filename = uploadFile.substring(uploadFile.lastIndexOf("//") + 1);
                    ds.writeBytes(twoHyphens + boundary + end);
                    ds.writeBytes("Content-Disposition: form-data; " + "name="file" + i + "";filename="" + filename
                            + """ + end);
                    ds.writeBytes(end);
                    FileInputStream fStream = new FileInputStream(uploadFile);
                    int bufferSize = 1024;
                    byte[] buffer = new byte[bufferSize];
                    int length = -1;
                    while ((length = fStream.read(buffer)) != -1) {
                        ds.write(buffer, 0, length);
                    }
                    ds.writeBytes(end);
                    /* close streams */
                    fStream.close();
                }
                ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
                /* close streams */
                ds.flush();
                if (httpURLConnection.getResponseCode() >= 300) {
                    throw new Exception(
                            "HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
                }
    
                if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    inputStream = httpURLConnection.getInputStream();
                    inputStreamReader = new InputStreamReader(inputStream);
                    reader = new BufferedReader(inputStreamReader);
                    tempLine = null;
                    resultBuffer = new StringBuffer();
                    while ((tempLine = reader.readLine()) != null) {
                        resultBuffer.append(tempLine);
                        resultBuffer.append("
    ");
                    }
                }
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                if (ds != null) {
                    try {
                        ds.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if (inputStreamReader != null) {
                    try {
                        inputStreamReader.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
    
                return resultBuffer.toString();
            }
        }
    
    
        public static void main(String[] args) {
    
            // 上传文件测试
             String str = uploadFile("http://127.0.0.1:8080/image/image.do",new String[] { "/Users//H__D/Desktop//1.png","//Users/H__D/Desktop/2.png" });
             System.out.println(str);
    
    
        }
    
    }
    
    uploadFile



    参考2:

    http://blog.csdn.net/linfeng24/article/details/37885919

        private void uploadFile() {  
            String end = "
    ";  
            String twoHyphens = "--";  
            String boundary = "*****";  
            String newName = "image.jpg";  
            String uploadFile = "storage/sdcard1/bagPictures/102.jpg";  
            ;  
            String actionUrl = "http://192.168.1.123:8080/upload/servlet/UploadServlet";  
            try {  
                URL url = new URL(actionUrl);  
                HttpURLConnection con = (HttpURLConnection) url.openConnection();  
                /* 允许Input、Output,不使用Cache */  
                con.setDoInput(true);  
                con.setDoOutput(true);  
                con.setUseCaches(false);  
                /* 设置传送的method=POST */  
                con.setRequestMethod("POST");  
                /* setRequestProperty */  
                con.setRequestProperty("Connection", "Keep-Alive");  
                con.setRequestProperty("Charset", "UTF-8");  
                con.setRequestProperty("Content-Type",  
                        "multipart/form-data;boundary=" + boundary);  
                /* 设置DataOutputStream */  
                DataOutputStream ds = new DataOutputStream(con.getOutputStream());  
                ds.writeBytes(twoHyphens + boundary + end);  
                ds.writeBytes("Content-Disposition: form-data; "  
                        + "name="file1";filename="" + newName + """ + end);  
                ds.writeBytes(end);  
                /* 取得文件的FileInputStream */  
                FileInputStream fStream = new FileInputStream(uploadFile);  
                /* 设置每次写入1024bytes */  
                int bufferSize = 1024;  
                byte[] buffer = new byte[bufferSize];  
                int length = -1;  
                /* 从文件读取数据至缓冲区 */  
                while ((length = fStream.read(buffer)) != -1) {  
                    /* 将资料写入DataOutputStream中 */  
                    ds.write(buffer, 0, length);  
                }  
                ds.writeBytes(end);  
                ds.writeBytes(twoHyphens + boundary + twoHyphens + end);  
                /* close streams */  
                fStream.close();  
                ds.flush();  
                /* 取得Response内容 */  
                InputStream is = con.getInputStream();  
                int ch;  
                StringBuffer b = new StringBuffer();  
                while ((ch = is.read()) != -1) {  
                    b.append((char) ch);  
                }  
                /* 将Response显示于Dialog */  
                showDialog("上传成功" + b.toString().trim());  
                /* 关闭DataOutputStream */  
                ds.close();  
            } catch (Exception e) {  
                showDialog("上传失败" + e);  
            }  
        }  



    自己:

       public static String sendMsg(InputStream fStream) throws Exception {
            String wholeUrl = "x";
            try {
                wholeUrl = "x";
                URL object = new URL(wholeUrl);
                String end = "
    ";
                String twoHyphens = "--";
                String boundary = "*****";
    
                HttpURLConnection con = (HttpURLConnection) object.openConnection();
                con.setConnectTimeout(5000);
                con.setReadTimeout(30000);
                con.setDoInput(true);
                con.setDoOutput(true);
                con.setUseCaches(false);
                con.setRequestMethod("POST");
                con.setRequestProperty("Connection", "Keep-Alive");
                con.setRequestProperty("Charset", "UTF-8");
                con.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
                con.setRequestProperty("Accept", "application/json");
    
                DataOutputStream ds = new DataOutputStream(con.getOutputStream());
                ds.writeBytes(twoHyphens + boundary + end);
                ds.writeBytes("Content-Disposition: form-data; " + "name="file";filename="test.jpg"" + end);
                ds.writeBytes(end);
             //   FileInputStream fStream = new FileInputStream(file);
                int bufferSize = 1024;
                byte[] buffer = new byte[bufferSize];
                int length = -1;
                while ((length = fStream.read(buffer)) != -1) {
                    ds.write(buffer, 0, length);
                }
                ds.writeBytes(end);
                fStream.close();
                ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
                LOGGER.info("CardSender start");
                ds.flush();
    
                // 显示 POST 请求返回的内容
                StringBuilder sb = new StringBuilder();
                int HttpResult = con.getResponseCode();
                LOGGER.info("CardSender end");
                if (HttpResult == HttpURLConnection.HTTP_OK)
                {
                    BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
                    String line;
                    while ((line = br.readLine()) != null)
                    {
                        sb.append(line + "
    ");
                    }
                    br.close();
                    System.out.println(sb);
                    return sb.toString();
    
                } else {
                    LOGGER.error("CardSender.fail " + con.getResponseMessage());
                    throw new Exception("CardSender.fail " + con.getResponseMessage());
                }
            } catch (Exception e) {
                e.printStackTrace();
                LOGGER.error("CardSender.error", e);
                throw new Exception("CardSender.error", e);
            }
    
        }


    为了兼容springmvc的multipartfile,将参数由file改为inputstream

  • 相关阅读:
    北京Uber优步司机奖励政策(4月1日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月1日)
    成都Uber优步司机奖励政策(3月31日)
    北京Uber优步司机奖励政策(3月31日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(3月31日)
    uber司机已经激活了,就是还没有上传头
    优步深圳车辆准入标准降啦!6万8年粤车牌!
    开优步认识各色各样的人,人生需要这样的新鲜体验!
    Uber:中国市场两年内不考虑盈利,每年补贴10亿美金
    设置Windows开机自动启动VirtualBox虚拟机系统
  • 原文地址:https://www.cnblogs.com/silyvin/p/9106723.html
Copyright © 2011-2022 走看看