您的位置:首页 > 理论基础 > 计算机网络

HTTP上传文件的boundary

2016-04-05 11:02 351 查看
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;

public class TestQrcode {
public static void main(String[] args) throws Exception{
URL url = new URL(“http://localhost:8180/xxxx“);

//自己生一个boundary
String boundary = UUID.randomUUID().toString().replace(“-“, “”);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod(“POST”);
conn.setDoOutput(true);
//指定Content-Type为multipart/form-data,并且指定一下boundary
conn.setRequestProperty(“Content-Type”, “multipart/form-data; boundary=” + boundary);

conn.setReadTimeout(5000);
conn.setConnectTimeout(5000);

File file = new File(“E:\qr2.jpg”);
InputStream is = new FileInputStream(file);
OutputStream os = conn.getOutputStream();

//注意注意:这里先发两个横杠哦!
os.write((“–” + boundary + “\r\n”).getBytes());
os.write((“Content-Disposition: form-data; name=\”file\”; filename=\”” + file.getName() + “\”\r\n”).getBytes());
os.write(“Content-Type: image/jpeg\r\n\r\n”.getBytes());

byte[] b = new byte[200];
int len = 0;
while(-1 != (len = is.read(b))){
os.write(b,0,len);
}

os.write(“\r\n”.getBytes());

//注意注意:格式是:–boundary–。两个横杠加boundary,然后再有两个横杠
os.write((“–” + boundary + “–\r\n”).getBytes());
os.flush();
os.close();
is.close();

InputStream is2 = conn.getInputStream();
BufferedReader buf = new BufferedReader(new InputStreamReader(is2));
for(String line = buf.readLine(); null != line;line = buf.readLine()){
System.out.println(line);
}

is2.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HTTP-bound