由于客户端有上传文件的需求,服务器接收到客户端上传的文件后,需要将文件透传给后台业务系统.
以前给后台业务系统交互时,组装多段请求时使用的是org.apache.http.entity.mime.content.FileBody对象保存文件对象透传,但是这样的话,服务器需要在本地生成临时文件,比较麻烦.
ContentBody body = new FileBody((File) value);
entity.addPart("pic", body);
这样的话需要先生成本地文件,上传成功后再删除临时文件,相当繁琐.
今天偶然发现,可以使用org.apache.http.entity.mime.content.InputStreamBody.InputStreamBody(InputStream, String)类,直接将客户端的文件输入流拷贝一下就可以了.这样就省去了在本地生成临时文件的麻烦.
ByteArrayInputStream bis = new ByteArrayInputStream(data);
InputStreamBody isb = new InputStreamBody(bis, fileName);
entity.addPart("pic", isb);
通过以上改造,省去了在本地生成临时文件的烦恼,并且使代码看起来更加直观.
这种方式适用于需要透传文件的地方.比如
"客户端"--"服务器"--"业务系统",
"客户端"最终要将文件上传到
"业务系统",这时
"服务器"就可以使用这种方法,直接透传,省时省力.
分享到:
相关推荐
Android使用HttpClient上传文件到服务器完整实例,包括要用到的jar都下libs下面,服务器的源码也有
使用httpclient上传文件, CloseableHttpClient httpClient = HttpClientBuilder.create().build();
httpClient上传文件,能直接运行的代码,appache commons
使用HttpClient实现文件的上传所需lib
使用HttpClient方式进行文件上传时需要用到的jar包,亲测可用。
httpclient3 httpclient4 上传文件 乱码问题
花了大半天写的测试类,用的时候记得改下引用的包名,可以当util工具类用,其他说明见博客 ...流方式发送接收: ...觉得可以的话,又不想复制粘贴,就花点积分下载吧,o(* ̄︶ ̄*)o
用httpcient上传文件,用httpclient上传文件
文档中详细演示了如何使用HttpClient4进行文件上传
HttpClient 上传文件 Servlet 处理文件上传 commons-fileupload 处理文件上传 commons-fileupload 处理文件上传,在struts中可以不用对应actionform,在jsp,servelet中应用都很方便
struts2 android httpclient 上传文件 客服端 服务器端 亲测通过
本功能支持文件上传 下载,支持请求流,支持JSON、XML请求,本版本是httpclient 4,其它jar包自行下载
本人自己总结的httpClient PostMethod 上传文件完整实例 以及 使用java PostMethod 和GetMethod 发送请求实例 及乱码处理
Eclipse下完整的java程序,包含HttpClient的全部jar包。通过java类文件,实现通过链接将文件下载本地
文件上传 HttpClient
NULL 博文链接:https://willvvv.iteye.com/blog/1660088
httpclient上传头像,将图片保存在文件中,添加文件参数,使用的post方式
使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,
httpclient和RestfuL服务风格上传下载文件,可改为JAVA分布式系统进行交互,具体用法和改法详见代码里的注释