模拟表单POST上传文件

模拟表单POST上传文件

JAVA模拟表单POST上传文件

import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import java.util.concurrent.Callable;

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageTypeSpecifier;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;

import org.apache.commons.lang.StringUtils;

import com.grand.mysql_handler.mapper.SystemMapper;

import net.sf.json.JSONObject;


private String uploadImage(String name,byte[] buf) throws Exception { String filename = name.substring(name.lastIndexOf("/") + 1); final String newLine = "\r\n"; final String boundaryPrefix = "--"; final String boundary = "----theorydance"; String api_url = "http://localhost:8080/filestorage/app/api/fileUpload"; HttpURLConnection conn = (HttpURLConnection) new URL(api_url).openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setReadTimeout(20000); conn.setConnectTimeout(5000); conn.setRequestMethod("POST"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("Charset", "UTF-8"); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); StringBuilder sb = new StringBuilder(); // key参数 sb.append(boundaryPrefix + boundary + newLine); sb.append("Content-Disposition: form-data; name=\"name\"" + newLine); sb.append(newLine); sb.append((name==null?"default":name) + newLine); // 图片数据 sb.append(boundaryPrefix + boundary + newLine); sb.append("Content-Disposition: form-data; name=\"myfile\"; filename=\""+filename+"\"" + newLine); sb.append("Content-Type: application/octet-stream" + newLine); sb.append(newLine); OutputStream out = new DataOutputStream(conn.getOutputStream()); out.write(sb.toString().getBytes()); out.write(buf); out.write(newLine.getBytes()); String endFlag = boundaryPrefix + boundary + boundaryPrefix + newLine; out.write(endFlag.getBytes()); out.flush(); out.close(); System.out.println("响应状态码:"+conn.getResponseCode()); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; String content = ""; while((line=br.readLine())!=null) { content += line; } JSONObject json = JSONObject.fromObject(content); System.out.println(json.toString()); return json.getJSONObject("data").getString("url"); }
12-31 17:30