最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java通過模擬post方式提交表單實現(xiàn)圖片上傳功能實例

 更新時間:2015年11月03日 14:11:59   作者:5iasp  
這篇文章主要介紹了java通過模擬post方式提交表單實現(xiàn)圖片上傳功能實例,涉及Java針對表單的提交操作響應及文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了java通過模擬post方式提交表單實現(xiàn)圖片上傳功能。分享給大家供大家參考,具體如下:

模擬表單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頭和上傳文件內(nèi)容的分隔符 
  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()); 
   // text 
   if (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()); 
   } 
   // file 
   if (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(); 
   // 讀取返回數(shù)據(jù) 
   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("發(fā)送POST請求出錯。" + urlStr); 
   e.printStackTrace(); 
  } finally { 
   if (conn != null) { 
    conn.disconnect(); 
    conn = null; 
   } 
  } 
  return res; 
 } 
}

希望本文所述對大家Java程序設計有所幫助。

相關(guān)文章

  • Springboot打包部署代碼實例

    Springboot打包部署代碼實例

    這篇文章主要介紹了Springboot打包部署代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Java實現(xiàn)調(diào)用外部程序的示例代碼

    Java實現(xiàn)調(diào)用外部程序的示例代碼

    本文主要介紹了Java實現(xiàn)調(diào)用外部程序的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • SpringBoot接收與響應xml報文請求的實現(xiàn)

    SpringBoot接收與響應xml報文請求的實現(xiàn)

    我們在進行接口對接時,會出現(xiàn)報文形式的信息傳遞,這篇文章主要給大家介紹了關(guān)于SpringBoot接收與響應xml報文請求的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Java Predicate接口定義詳解

    Java Predicate接口定義詳解

    Predicate是Java中的一個函數(shù)式接口,它代表一個判斷邏輯,接收一個輸入?yún)?shù),返回一個布爾值,這篇文章主要介紹了Java Predicate接口的定義及示例代碼,需要的朋友可以參考下
    2025-04-04
  • JDK8中Optional類巧用之判空操作

    JDK8中Optional類巧用之判空操作

    善用Optional可以使我們代碼中很多繁瑣、丑陋的設計變得十分優(yōu)雅,這篇文章主要給大家介紹了JDK8中Optional類巧用之判空的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • Spring的@Conditional詳解

    Spring的@Conditional詳解

    這篇文章主要介紹了Spring的@Conditional詳解,給想要注入Bean增加限制條件,只有滿足限制條件才會被構(gòu)造并注入到Spring的IOC容器中,通常和@Bean注解一起使用,需要的朋友可以參考下
    2024-01-01
  • SpringBoot常見問題小結(jié)

    SpringBoot常見問題小結(jié)

    這篇文章主要介紹了SpringBoot常見問題小結(jié),需要的朋友可以參考下
    2017-07-07
  • MyBatis詳細講解DAO代理的使用

    MyBatis詳細講解DAO代理的使用

    MyBatis允許只聲明一個dao接口,而無需寫dao實現(xiàn)類的方式實現(xiàn)數(shù)據(jù)庫操作。前提是必須保證Mapper文件中的<mapper>標簽的namespace屬性值必須要和dao接口的類路徑一致,MyBatis容器會自動通過動態(tài)代理生成接口的實現(xiàn)類
    2022-04-04
  • Springboot @Validated和@Valid的區(qū)別及使用詳解

    Springboot @Validated和@Valid的區(qū)別及使用詳解

    這篇文章主要介紹了Springboot @Validated和@Valid的區(qū)別及使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Java構(gòu)造器與傳值學習總結(jié)

    Java構(gòu)造器與傳值學習總結(jié)

    這篇文章主要為大家詳細介紹了Java構(gòu)造器與傳值學習總結(jié),文中示例介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論

江口县| 买车| 大同市| 固安县| 泰来县| 巴里| 揭阳市| 英德市| 海伦市| 利川市| 九寨沟县| 通州区| 达州市| 呈贡县| 中阳县| 隆安县| 霞浦县| 苏尼特右旗| 贵南县| 海淀区| 许昌县| 德州市| 磐安县| 内乡县| 建水县| 石阡县| 定州市| 镇安县| 克什克腾旗| 天气| 永嘉县| 垦利县| 洛川县| 朝阳市| 白沙| 桦甸市| 隆尧县| 溆浦县| 和硕县| 永新县| 洱源县|