Java上传带图片的Http请求详解编程语言

/** 
     * 上传带图片的http请求 
     *  
     * @param murl网址 
     * @param map 
     *            参数对 主要不要包括图片 
     * @param path 
     *            图片路径 也可以是其他格式 自行做 
     * @return 
     * @throws Exception 
     */ 
    static public String post(String murl, HashMap<String, String> map, 
            String path) throws Exception { 
        File file = new File(path); 
        String filename = path.substring(path.lastIndexOf("/")); 
        // String filename = Str.md5(path); 
        StringBuilder sb = new StringBuilder(); 
        if (null != map) { 
            for (Map.Entry<String, String> entry : map.entrySet()) { 
                sb.append("--" + BOUNDARY + "/r/n"); 
                sb.append("Content-Disposition: form-data; name=/"" 
                        + entry.getKey() + "/"" + "/r/n"); 
                sb.append("/r/n"); 
                sb.append(entry.getValue() + "/r/n"); 
  
            } 
        } 
  
        sb.append("--" + BOUNDARY + "/r/n"); 
        sb.append("Content-Disposition: form-data; name=/"image/"; filename=/"" 
                + filename + "/"" + "/r/n"); 
  
        sb.append("Content-Type: image/pjpeg" + "/r/n"); 
        sb.append("/r/n"); 
  
        byte[] before = sb.toString().getBytes("UTF-8"); 
        byte[] after = ("/r/n--" + BOUNDARY + "--/r/n").getBytes("UTF-8"); 
  
        URL url = new URL(murl); 
        HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
        conn.setRequestMethod("POST"); 
        conn.setRequestProperty("Content-Type", 
                "multipart/form-data; boundary=" + BOUNDARY); 
  
        conn.setRequestProperty("Authorization", 
                "Bearer " + Douban.getAccessToken()); 
        conn.setRequestProperty("Content-Length", 
                String.valueOf(before.length + file.length() + after.length)); 
        conn.setRequestProperty("HOST", url.getHost()); 
        conn.setDoOutput(true); 
  
        OutputStream out = conn.getOutputStream(); 
        InputStream in = new FileInputStream(file); 
  
        out.write(before); 
  
        byte[] buf = new byte[1024]; 
        int len; 
        while ((len = in.read(buf)) != -1) 
            out.write(buf, 0, len); 
  
        out.write(after); 
  
        in.close(); 
        out.close(); 
        MLog.e(inputStream2String(conn.getInputStream()) + ""); 
        return conn.getContent().toString(); 
  
    } 
  
    /** 
     * is转String 
     *  
     * @param in 
     * @return 
     * @throws IOException 
     */ 
    public static String inputStream2String(InputStream in) throws IOException { 
        StringBuffer out = new StringBuffer(); 
        byte[] b = new byte[4096]; 
        for (int n; (n = in.read(b)) != -1;) { 
            out.append(new String(b, 0, n)); 
        } 
        return out.toString(); 
    }

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10561.html

(0)
上一篇 2021年7月19日 10:20
下一篇 2021年7月19日 10:20

相关推荐

发表回复

登录后才能评论