您的位置:首页 > 编程语言 > Java开发

Java模拟post实现图片上传

2016-01-30 11:48 791 查看
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;
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 图片