欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

HttpClient通過(guò)Post上傳文件的實(shí)例代碼

 更新時(shí)間:2016年08月03日 10:02:35   作者:一葉飄舟  
這篇文章主要介紹了HttpClient通過(guò)Post上傳文件的實(shí)例代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

在之前一段的項(xiàng)目中,使用Java模仿Http Post方式發(fā)送參數(shù)以及文件,單純的傳遞參數(shù)或者文件可以使用URLConnection進(jìn)行相應(yīng)的處理。

但是項(xiàng)目中涉及到既要傳遞普通參數(shù),也要傳遞多個(gè)文件(不是單純的傳遞XML文件)。在網(wǎng)上尋找之后,發(fā)現(xiàn)是使用HttClient來(lái)進(jìn)行響應(yīng)的操作,起初嘗試多次依然不能傳遞參數(shù)和傳遞文件,后來(lái)發(fā)現(xiàn)時(shí)因?yàn)楫?dāng)使用HttpClient時(shí),不能使用request.getParameter()對(duì)普通參數(shù)進(jìn)行獲取,而要在服務(wù)器端使用Upload來(lái)進(jìn)行操作。

HttpClient4.2 jar下載 :http://download.csdn.net/detail/just_szl/4370574

客戶(hù)端代碼:

import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.HttpStatus; 
import org.apache.http.ParseException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.mime.MultipartEntity; 
import org.apache.http.entity.mime.content.FileBody; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 
/** 
* 
* @author <a href="mailto:just_szl@hotmail.com"> Geray</a> 
* @version 1.0,2012-6-12 
*/ 
public class HttpPostArgumentTest2 { 
//file1與file2在同一個(gè)文件夾下 filepath是該文件夾指定的路徑 
public void SubmitPost(String url,String filename1,String filename2, String filepath){ 
HttpClient httpclient = new DefaultHttpClient(); 
try { 
HttpPost httppost = new HttpPost(url); 
FileBody bin = new FileBody(new File(filepath + File.separator + filename1)); 
FileBody bin2 = new FileBody(new File(filepath + File.separator + filename2)); 
StringBody comment = new StringBody(filename1); 
MultipartEntity reqEntity = new MultipartEntity(); 
reqEntity.addPart("file1", bin);//file1為請(qǐng)求后臺(tái)的File upload;屬性 
reqEntity.addPart("file2", bin2);//file2為請(qǐng)求后臺(tái)的File upload;屬性 
reqEntity.addPart("filename1", comment);//filename1為請(qǐng)求后臺(tái)的普通參數(shù);屬性 
httppost.setEntity(reqEntity); 
HttpResponse response = httpclient.execute(httppost); 
int statusCode = response.getStatusLine().getStatusCode(); 
if(statusCode == HttpStatus.SC_OK){ 
System.out.println("服務(wù)器正常響應(yīng)....."); 
HttpEntity resEntity = response.getEntity(); 
System.out.println(EntityUtils.toString(resEntity));//httpclient自帶的工具類(lèi)讀取返回?cái)?shù)據(jù) 
System.out.println(resEntity.getContent()); 
EntityUtils.consume(resEntity); 
} 
} catch (ParseException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} finally { 
try { 
httpclient.getConnectionManager().shutdown(); 
} catch (Exception ignore) { 
} 
} 
} 
/** 
* @param args 
*/ 
public static void main(String[] args) { 
// TODO Auto-generated method stub 
HttpPostArgumentTest2 httpPostArgumentTest2 = new HttpPostArgumentTest2(); 
httpPostArgumentTest2.SubmitPost("http://127.0.0.1:8080/demo/receiveData.do", 
"test.xml","test.zip","D://test"); 
} 
} 

服務(wù)端代碼:

public void receiveData(HttpServletRequest request, HttpServletResponse response) throws AppException{ 
PrintWriter out = null; 
response.setContentType("text/html;charset=UTF-8"); 
Map map = new HashMap(); 
FileItemFactory factory = new DiskFileItemFactory(); 
ServletFileUpload upload = new ServletFileUpload(factory); 
File directory = null; 
List<FileItem> items = new ArrayList(); 
try { 
items = upload.parseRequest(request); 
// 得到所有的文件 
Iterator<FileItem> it = items.iterator(); 
while (it.hasNext()) { 
FileItem fItem = (FileItem) it.next(); 
String fName = ""; 
Object fValue = null; 
if (fItem.isFormField()) { // 普通文本框的值 
fName = fItem.getFieldName(); 
// fValue = fItem.getString(); 
fValue = fItem.getString("UTF-8"); 
map.put(fName, fValue); 
} else { // 獲取上傳文件的值 
fName = fItem.getFieldName(); 
fValue = fItem.getInputStream(); 
map.put(fName, fValue); 
String name = fItem.getName(); 
if(name != null && !("".equals(name))) { 
name = name.substring(name.lastIndexOf(File.separator) + 1); 
// String stamp = StringUtils.getFormattedCurrDateNumberString(); 
String timestamp_Str = TimeUtils.getCurrYearYYYY(); 
directory = new File("d://test"); 
directory.mkdirs(); 
String filePath = ("d://test")+ timestamp_Str+ File.separator + name; 
map.put(fName + "FilePath", filePath); 
InputStream is = fItem.getInputStream(); 
FileOutputStream fos = new FileOutputStream(filePath); 
byte[] buffer = new byte[1024]; 
while (is.read(buffer) > 0) { 
fos.write(buffer, 0, buffer.length); 
} 
fos.flush(); 
fos.close(); 
map.put(fName + "FileName", name); 
} 
} 
} 
} catch (Exception e) { 
System.out.println("讀取http請(qǐng)求屬性值出錯(cuò)!"); 
// e.printStackTrace(); 
logger.error("讀取http請(qǐng)求屬性值出錯(cuò)"); 
} 
// 數(shù)據(jù)處理 
try { 
out = response.getWriter(); 
out.print("{success:true, msg:'接收成功'}"); 
out.close(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
} 

以上所述是小編給大家介紹的HttpClient通過(guò)Post上傳文件的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論