使用httpClient MultipartRequestEntity文件上传解析文件和普通表单参数

本文详细介绍了如何使用HttpClient库中的MultipartRequestEntity进行文件上传操作,并结合普通表单参数进行发送。内容包括步骤解析、示例代码和注意事项,帮助开发者掌握HTTP文件上传技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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();

}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值