http如何实现同时发送文件和报文(用java实现)

http如何实现同时发送文件和报文(用java实现),第1张

你用的servlet 还是别的框架?

选POST

选form-data

选body

选File

选文件

Send

// commons fileupload组件的情况下,servlet接收的数据只能是type=file表单元素拿并指类型,那么获取type=text类型,就可以使用parseRequest(request)来获取list,fileitem,判断isFormField,为true非file类型的。就可以处理了。下面是处理的部分代码:

DiskFileItemFactory factory 蔽差= new DiskFileItemFactory()factory.setSizeThreshold(1024*1024)

String dirtemp = "c:"

File filedir = new File(dirtemp + "filetemp")

String str = nullif(!filedir.exists())filedir.mkdir()factory.setRepository(filedir)

ServletFileUpload upload = new ServletFileUpload(factory)

List list = upload.parseRequest(request)for(

int i = 0i<list.size()i++)

{

FileItem item = (FileItem) list.get(i)

if (item.isFormField()) {

System.out.println(item.getString())

} 消配else {

String filename = item.getName()

item.write(new File(request.getRealPath(dir), filename))

}

}

虽然在JDK的java.net包中已经提供了访问HTTP协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。以下是简单的post例子高镇颂:Stringurl="bbslogin2.php"PostMethodpostMethod=newPostMethod(url)//填入各个表单域的值NameValuePair[]data={newNameValuePair("id","youUserName"),newNameValuePair("passwd","yourPwd")}//将表单的值放入postMethod中postMethod.setRequestBody(data)//执行postMethodintstatusCode=httpClient.executeMethod(postMethod)//HttpClient对于要求接受后继服务的请求,象POST和PUT等戚郑不能自动处理旅余转发//301或者302if(statusCode==HttpStatus.SC_MOVED_PERMANENTLY||statusCode==HttpStatus.SC_MOVED_TEMPORARILY){//从头中取出转向的地址HeaderlocationHeader=postMethod.getResponseHeader("location")Stringlocation=nullif(locationHeader!=null){location=locationHeader.getValue()System.out.println("Thepagewasredirectedto:"+location)}else{System.err.println("Locationfieldvalueisnull.")}return}详情见:/developerworks/cn/opensource/os-httpclient/

JAVA WEB文件上传步骤如下:

实现 Web 开发中的文件上传功能,两个 *** 作:在 Web 页面添加上传输入项,在 Servlet 中读取上传文件的数据并保存在本地硬盘中。

1、Web 端上传文件。在 Web 页面中添加上传输入项:<input type="file">设置文件上传输入项时应注意:(1) 必须设置 input 输入项的 name 属性,否则浏览器将不会发送上传文件的数据。(2) 必须把 form 的 enctype 属性设为 multipart/form-data,设置该值后,浏览器在上传文件时,将把文件数据附带在 http 请求消息体中,并使用 MIME 协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。(3) 表单提交的方式要是 post

2、服务器端获取文件。如果提交表单的类型为 multipart/form-data 时,就不能采用传统方式获取数据。因为当表单类型为 multipart/form-data 时,浏览器会将数据以 MIME 协议的形式进行描述。如果想在服务器端获取数据,那么我们必须采用获取请求消息输入流的方式来获取数据。

3、Apache-Commons-fileupload。为了方便用户处理上传数据,Apache 提供了一个用来处理表单文件上传的开源组建。使用 Commons-fileupload 需要 Commons-io 包的支持。

4、fileuplpad 组建工作流程

(1)客户端将数据封装在 request 对象中。

(2)服务器端获取到 request 对象。

(3)创建解析器工睁槐厂 DiskFileItemFactory 。

(4)创建解析器,将解析器工厂放入解析器构造函数中。之后解析器会对 request 进行解析。

(5)解析器会将每个表单项封装为各自对应的 FileItem。

(6)判断代表每个表单项的 FileItem 是否为普通表单项 isFormField,返回 true 为普通表单项。

(7)如果是普通表单项携纯,通过悉隐友 getFieldName 获取表单项名,getString 获得表单项值。

(8)如果 isFormField 返回 false 那么是用户要上传的数据,可以通过 getInputStream 获取上传文件的数据。通过getName 可以获取上传的文件名。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12567078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存