返回顶部

收藏

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();
    }

标签:java

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 果冻想 发表 2018-03-24 05:26:38 JSP内置对象——exception对象
  2. 果冻想 发表 2018-03-24 05:30:20 JSP内置对象——out和page对象
  3. 果冻想 发表 2018-03-24 05:39:32 JSP内置对象——pageContext对象
  4. 果冻想 发表 2018-03-24 05:44:26 JSP内置对象——request对象
  5. 果冻想 发表 2018-03-24 05:47:27 JSP内置对象——response对象
  6. 果冻想 发表 2018-03-24 06:01:06 JSP内置对象——session对象
  7. 果冻想 发表 2018-03-24 06:12:44 JSP中的四大作用域
  8. 果冻想 发表 2018-03-24 06:17:00 JSP自定义标签学习笔记
  9. 果冻想 发表 2018-03-24 06:23:07 Java Web Filter学习笔记
  10. 果冻想 发表 2018-03-24 06:27:22 Java Web Listener学习笔记
  11. hollischuang 发表 2018-03-21 13:04:42 我反编译了Java 10的本地变量类型推断
  12. antil 发表 2018-03-21 05:05:28 .java 后缀勒索病毒分析报告

发表评论