本文共 4943 字,大约阅读时间需要 16 分钟。
public static void testUploadImage() { String url = "http://xxxtest/Api/testUploadModelBaking"; String fileName = "e:/username/textures/antimap_0017.png"; // 创建请求参数 Map textMap = new HashMap<>(); textMap.put("name", "testname"); textMap.put("type", "2"); // 文件参数 Map fileMap = new HashMap<>(); fileMap.put("upfile", fileName); // 设置内容类型 String contentType = ""; // 上传文件 String ret = formUpload(url, textMap, fileMap, contentType); System.out.println(ret);} public static String formUpload(String urlStr, MaptextMap, Map fileMap, String contentType) { String res = ""; HttpURLConnection conn = null; String BOUNDARY = "---------------------------123821742118716"; try { URL url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setReadTimeout(30000); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); OutputStream out = new DataOutputStream(conn.getOutputStream()); // 处理文本参数 if (!textMap.isEmpty()) { StringBuffer strBuf = new StringBuffer(); for (Map.Entry entry : textMap.entrySet()) { String inputName = entry.getKey(); String inputValue = entry.getValue(); if (inputValue == null) continue; strBuf.append("--").append(BOUNDARY).append("\r\n"); strBuf.append("Content-Disposition: form-data; name=\"").append(inputName).append("\"").append("\r\n\r\n"); strBuf.append(inputValue); } out.write(strBuf.toString().getBytes()); } // 处理文件参数 if (!fileMap.isEmpty()) { for (Map.Entry entry : fileMap.entrySet()) { String inputName = entry.getKey(); String inputValue = entry.getValue(); if (inputValue == null) continue; File file = new File(inputValue); String filename = file.getName(); // 设置内容类型 if (!"".equals(contentType)) { if (filename.endsWith(".png")) { contentType = "image/png"; } else if (filename.endsWith(".jpg") || filename.endsWith(".jpeg") || filename.endsWith(".jpe")) { contentType = "image/jpeg"; } else if (filename.endsWith(".gif")) { contentType = "image/gif"; } else if (filename.endsWith(".ico")) { contentType = "image/x-icon"; } } if ("".equals(contentType)) { contentType = "application/octet-stream"; } StringBuffer strBuf = new StringBuffer(); strBuf.append("--").append(BOUNDARY).append("\r\n"); strBuf.append("Content-Disposition: form-data; name=\"").append(inputName).append("; filename=\"").append(filename).append("\"").append("\r\n"); strBuf.append("Content-Type: ").append(contentType).append("\r\n\r\n"); out.write(strBuf.toString().getBytes()); DataInputStream in = new DataInputStream(new FileInputStream(file)); byte[] buffer = new byte[1024]; while ((bytes = in.read(buffer)) != -1) { out.write(buffer, 0, bytes); } in.close(); } } // 结束分隔符 byte[] endData = ("--" + BOUNDARY + "--\r\n").getBytes(); out.write(endData); out.flush(); out.close(); // 读取返回数据 StringBuffer strBuf = new StringBuffer(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while ((line = reader.readLine()) != null) { strBuf.append(line).append("\n"); } res = strBuf.toString(); reader.close(); reader = null; } catch (Exception e) { System.out.println("发送POST请求出错:" + urlStr); e.printStackTrace(); } finally { if (conn != null) { conn.disconnect(); conn = null; } } return res;}
testUploadImage 方法:这是一个用于测试上传图片功能的方法,主要用于发送POST请求上传文件。formUpload 方法:这是一个通用的文件上传方法,接收URL、文本参数、文件参数以及内容类型。form-data格式,包含Content-Disposition和内容。boundary字符串将请求参数和文件内容分隔开,然后发送请求。转载地址:http://pxbyz.baihongyu.com/