使用java模擬post協議實現圖片上傳

package com.yc.smartupload.bean;


import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;


/**
 * 模擬post協議上傳文件
 * 源辰信息
 * @author navy
 * 2017年7月27日
 */
public class MyPost {
public static void main(String[] args){
String boundary = "----------" + "dfYcetelkftgfdhredskfljfg454df";


Socket sk=null;


try {
StringBuffer command=new StringBuffer();
StringBuffer data=new StringBuffer();
FileInputStream fis=new FileInputStream(new File("E:\\圖片\\loopwallpaper\\137.jpg"));
System.out.println( fis.available() );
byte[] bt=new byte[fis.available()];
fis.read(bt);
fis.close();


//數據拼接
data.append("--" + boundary);
data.append("\r\n");
data.append("Content-Disposition: form-data; name=\"uname\"");
data.append("\r\n\r\n");
data.append("源辰\r\n");
data.append("--" + boundary);
data.append("\r\n");

data.append("--" + boundary);
data.append("\r\n");
data.append("Content-Disposition: form-data; name=\"photo\"; filename=\"137.jpg\"");
data.append("\r\n");
data.append("Content-Type: image/jpeg");
data.append("\r\n\r\n");
byte[] dataByte=data.toString().getBytes(); 
byte[] endData=("--" + boundary + "--\r\n").getBytes();
//數據字節
sk=new Socket("127.0.0.1",8080);
String url="/fileUpload/userInfo?op=myUpload"; //請求地址

//拼接協議
command.append("POST "+url+" HTTP/1.1\r\n");
command.append("Host:127.0.0.1:8080\r\n");
command.append("Content-Type:multipart/form-data; boundary=");
command.append(boundary);
command.append("\r\n");
command.append("Content-Length:"+(dataByte.length+endData.length+bt.length)+" \r\n\r\n");

//將拼接好的協議通過網絡傳輸到服務器
DataOutputStream dos=new DataOutputStream(sk.getOutputStream());
dos.write( command.toString().getBytes() );
dos.write( dataByte );
dos.write(bt);
dos.write(endData);
//將數據發送到服務器
dos.flush();


//獲取服務器的響應信息
BufferedReader br=new BufferedReader(new InputStreamReader(sk.getInputStream()));
String line=null;
while( (line=br.readLine())!=null ){
System.out.println(line);
}
dos.close();
br.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

發佈了70 篇原創文章 · 獲贊 78 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章