package javaBasic;
import java.io.BufferedInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.URLEncoder;
import java.util.Base64;
public class SocketHttp {
public static String readFileAsString(String fileName) throws Exception{
FileInputStream fis = new FileInputStream(fileName);
BufferedInputStream in = new BufferedInputStream(fis);
byte buffer[] = new byte[256];
StringBuffer picStr=new StringBuffer();
Base64.Encoder base64 = Base64.getEncoder();
while (in.read(buffer)>= 0){
picStr.append(base64.encode(buffer));//进行64位编码
}
System.out.println(picStr);
fis.close();
fis=null;
in.close();
in=null;
buffer=null;
return picStr.toString();
}
public static String GetImageStr()
{//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
String imgFile = "D://1.jpeg";//待处理的图片
InputStream in = null;
byte[] data = null;
//读取图片字节数组
try
{
in = new FileInputStream(new File(imgFile));
data = new byte[in.available()];
in.read(data);
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
//对字节数组Base64编码
Base64.Encoder base64 = Base64.getEncoder();
// Base64.Encoder encoder = new Base64.Encoder ();
return base64.encodeToString(data);//返回Base64编码过的字节数组字符串
}
public static void main(String[] a) {
try {
File file=new File("D:/1.jpeg");
//将文件读成字符串
String picString=GetImageStr();
//URLEncode
picString="myfile="+URLEncoder.encode(picString, "UTF-8");
String url="http://202.118.19.82:8080/upload?imgname=1.jpg";
Socket socket = new Socket();
InetSocketAddress inetSocketAddress = new InetSocketAddress("202.118.19.82", 8080);
socket.connect(inetSocketAddress, 1000);
DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
String message=""
+"POST "+"/upload"+" HTTP/1.1 \r\n "
+"Host: 202.118.19.82 \r\n "+"Accept: */* \r\n "
+"Cache-Control:no-cache \r\n" +"User-Agent: MSIE6.0; \r\n "
+"Content-Type: application/x-www-form-urlencoded \r\n "
+"Content-Length: "+picString.length()+" \r\n "
+"Connection: Close \r\n\r\n"//报头以两个\n作为结束标志
+picString+"\r\n ";//post数据
System.out.println(message);
byte buffer[]=message.getBytes();
dos.write(buffer);
dos.flush();
dos.close();
//以上只进行了发送操作
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
socket模仿HTTP发送图片到服务端
猜你喜欢
转载自blog.csdn.net/qq_33644186/article/details/89306007
今日推荐
周排行