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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树