HttpClient httpClient = new HttpClient();
StringPart sp = new StringPart("parameters", pam);
sp.setCharSet("GBK");// 这里要设置字符编码,不然会乱码
parameters:里面包含着普通表单参数。 将普通表单参数和字符编码一起放入 StringPart中
FilePart里面放置 文件 FilePart fp = new FilePart("file", file2);
//提交地址
PostMethod method = new PostMethod("*******************************");
Part[] parts = new Part[] { fp, sp };
method.getParams().setContentCharset("UTF-8");
method.setRequestEntity(new MultipartRequestEntity(parts, method.getParams()));
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);//设置连接时间
httpClient.executeMethod(method);
/***************************在另一端解析传过来的普通表单参数和文件***********************************/
文件传输过程中使用io流的形式,想要获取并且保存文件必须获取输入流,然后通过输入流输出到磁盘文件中。
InputStream inputStream=null;//文件输入流
String name =null;//文件名
boolean isMultipart = ServletFileUpload.isMultipartContent(request);//判断是否有文件存在
if (isMultipart) {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
for (int i = 0; i < items.size(); i++) {
FileItem item = (FileItem) items.get(i);
if (!item.isFormField()) {
// 文件数据
String fileName = item.getName();
name = fileName.substring(0, fileName.lastIndexOf("."));
System.out.println("截取的文件名:" + name);
inputStream = item.getInputStream();// 得到输入流
/**
* 保存文件
*/
byte[] data = new byte[1024];
int len = 0;
FileOutputStream fileOutputStream = new FileOutputStream(HSUtil.DISK + name+".txt");
while ((len = inputStream.read(data)) != -1) {
fileOutputStream.write(data, 0, len);
}
} else {
// 普通表单数据
String value = item.getString(); //json字符串
Map<String, Object> resultMap = HSUtil.parseJSON2Map(value);// 将字符串转化成map
String coinstCode = resultMap.get("coinstCode").toString();
String fileType=resultMap.get("fileType").toString();//获取文件类型
String fileNames = resultMap.get("fileName").toString();
}
}