如何使用java实现基于Http协议的大文件传输

如何使用java实现基于Http协议的大文件传输,第1张

虽然在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 6 提供了一个轻量级的纯 Java Http 服务器的实现。下面是一个简单的例子:

public static void main(String[] args) throws Exception{

 HttpServerProvider httpServerProvider = HttpServerProvider.provider()

 InetSocketAddress addr = new InetSocketAddress(7778)

 HttpServer httpServer = httpServerProvider.createHttpServer(addr, 1)

 httpServer.createContext("/myapp/", new MyHttpHandler())

 httpServer.setExecutor(null)

 httpServer.start()

 System.out.println("started")

}

static class MyHttpHandler implements HttpHandler{

 public void handle(HttpExchange httpExchange) throws IOException {

String response = "Hello world!"

httpExchange.sendResponseHeaders(200, response.length())

OutputStream out = httpExchange.getResponseBody()

out.write(response.getBytes())

out.close()

 }

}

然后,在浏览器中访问 http://localhost:7778/myapp/

你用的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))

}

}


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

原文地址: http://outofmemory.cn/tougao/11704532.html

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

发表评论

登录后才能评论

评论列表(0条)

保存