Java模拟post实现图片上传

 public class Post {
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();  
BASE64Encoder base64=new BASE64Encoder();  
while (in.read(buffer)>= 0){  
picStr.append(base64.encode(buffer));//进行64位编码  
}  
fis.close();  
fis=null;  
in.close();  
in=null;  
buffer=null;  
return picStr.toString();  
}  

public static void main(String[] a) {     
try {  
File file=new File("G:\\图片\\loopwallpaper\\137.jpg");  
//将文件读成字符串  
String picString=readFileAsString(file.toString());  
//URLEncode  
picString="&uname=yc&pwd=a&picdata="+URLEncoder.encode(picString, "UTF-8");
// form域的数据.form域的数据必须以链接形式发送 
InetAddress addr = InetAddress.getByName("218.196.14.220"); 
// 建立连接 
Socket socket =new Socket(addr,8080);
String url="/JavaHttp/loginServlet.do"; 
// 创建数据提交数据流 
DataOutputStream dos=new DataOutputStream(socket.getOutputStream());     
String message="POST "+url+" HTTP/1.1\r\n"
+"Host:localhost \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\r\n" //报头以两个\n作为结束标志  
+"Connection:Close \r\n\r\n";
//+"Connection: Keep-Alive \r\n\r\n";
message+=picString;
byte buffer[]=message.getBytes();     
dos.write(buffer);  
dos.flush();  
// 创建web服务器响应的数据流 
BufferedReader httpResponse = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8")); 
String lineStr = ""; 
while ((lineStr = httpResponse.readLine()) != null) { 
System.out.println(lineStr); 
}
dos.close();  
socket.close(); 
} catch (Exception e) {  
e.printStackTrace();  
}     
}


public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response); 
}


public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("uname: "+request.getParameter("uname"));
System.out.println("pwd: "+request.getParameter("pwd"));
String picdata=request.getParameter("picdata");
BASE64Decoder base64=new BASE64Decoder();  
//64位解码  
byte[] buffer=base64.decodeBuffer(picdata); 
//写进文件  
FileOutputStream fos=new FileOutputStream("D:\\photo.jpg");  
fos.write(buffer);  
fos.flush();  
fos.close();  
fos=null;  
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值