首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

java模拟post方式提交表单实现图片下传

2013-03-16 
java模拟post方式提交表单实现图片上传文章标题: java模拟post方式提交表单实现图片上传 作者: javaboy201

java模拟post方式提交表单实现图片上传

文章标题: java模拟post方式提交表单实现图片上传

 

作者: javaboy2012
Email:yanek@163.com
qq:    1046011462

 

 

模拟表单html如下:

 

<form action="up_result.jsp" method="post" enctype="multipart/form-data" name="form1" id="form1">
 
    <label>
  <input type="text" name="name" value="" />
  </label>
 
    <label>
  <input type="file" name="userfile" />
  </label>
 
  <label>
  <input type="submit" value="上传" />
  </label>
</form>

 

 

java代码如下:

 

package com.yanek.util;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import javax.activation.MimetypesFileTypeMap;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class HttpPostUploadUtil {/** * @param args */public static void main(String[] args) {String filepath="E:\\ziliao\\0.jpg";String urlStr = "http://127.0.0.1:8080/minicms/up/up_result.jsp";Map<String, String> textMap = new HashMap<String, String>();textMap.put("name", "testname");Map<String, String> fileMap = new HashMap<String, String>();fileMap.put("userfile", filepath);String ret = formUpload(urlStr, textMap, fileMap);System.out.println(ret);}/** * 上传图片 *  * @param urlStr * @param textMap * @param fileMap * @return */public static String formUpload(String urlStr, Map<String, String> textMap,Map<String, String> fileMap) {String res = "";HttpURLConnection conn = null;String BOUNDARY = "---------------------------123821742118716"; //boundary就是request头和上传文件内容的分隔符try {URL url = new URL(urlStr);conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5000);conn.setReadTimeout(30000);conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);conn.setRequestMethod("POST");conn.setRequestProperty("Connection", "Keep-Alive");conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)");conn.setRequestProperty("Content-Type","multipart/form-data; boundary=" + BOUNDARY);OutputStream out = new DataOutputStream(conn.getOutputStream());// textif (textMap != null) {StringBuffer strBuf = new StringBuffer();Iterator iter = textMap.entrySet().iterator();while (iter.hasNext()) {Map.Entry entry = (Map.Entry) iter.next();String inputName = (String) entry.getKey();String inputValue = (String) entry.getValue();if (inputValue == null) {continue;}strBuf.append("\r\n").append("--").append(BOUNDARY).append("\r\n");strBuf.append("Content-Disposition: form-data; name=\""+ inputName + "\"\r\n\r\n");strBuf.append(inputValue);}out.write(strBuf.toString().getBytes());}// fileif (fileMap != null) {Iterator iter = fileMap.entrySet().iterator();while (iter.hasNext()) {Map.Entry entry = (Map.Entry) iter.next();String inputName = (String) entry.getKey();String inputValue = (String) entry.getValue();if (inputValue == null) {continue;}File file = new File(inputValue);String filename = file.getName();String contentType = new MimetypesFileTypeMap().getContentType(file);if (filename.endsWith(".png")) {contentType = "image/png";}if (contentType == null || contentType.equals("")) {contentType = "application/octet-stream";}StringBuffer strBuf = new StringBuffer();strBuf.append("\r\n").append("--").append(BOUNDARY).append("\r\n");strBuf.append("Content-Disposition: form-data; name=\""+ inputName + "\"; filename=\"" + filename+ "\"\r\n");strBuf.append("Content-Type:" + contentType + "\r\n\r\n");out.write(strBuf.toString().getBytes());DataInputStream in = new DataInputStream(new FileInputStream(file));int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}in.close();}}byte[] endData = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();out.write(endData);out.flush();out.close();// 读取返回数据StringBuffer strBuf = new StringBuffer();BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line = null;while ((line = reader.readLine()) != null) {strBuf.append(line).append("\n");}res = strBuf.toString();reader.close();reader = null;} catch (Exception e) {System.out.println("发送POST请求出错。" + urlStr);e.printStackTrace();} finally {if (conn != null) {conn.disconnect();conn = null;}}return res;}}


 

 

 

热点排行