数据压缩
浏览器在发送请伍岩求时都会带着 Accept-Encoding 头字段,⾥⾯是浏览器⽀持的压缩格式列表,例如 gzip、deflate、br 等,这样服务器就可以从中选择⼀种压缩算法,放进 Content-Encoding 响应头⾥,再把原数据压缩后发给浏览器。如果压缩率有 50%,那么 100k 的数据压完之后只剩 50k,相当于在带宽不变的情况下⽹速快了⼀倍。
分块传输
除了压缩⽂件之外,另⼀种办法就是分块传输。它们的原理差不多,都是把⼤⽂件变⼩传输。分块传输会把⼀个⼤⽂件切成很多⼩块,把这些⼩块依次发给浏览器,浏览器收到之后再组装复原。这样浏览器和服务器都不⽤在内存中保存全部⽂件,每次只收发⼀⼩部分,⽹岩码络也不会被⼤⽂件长时间占⽤,内存、带宽等资源也就节省下来了。
小文件可以信渣旅在post时顺带发过去。梁者大文件可以用数据流模式滑凳传输 inputstream/outputstream 在浏览器里放控件 activex,applet,flash等等应该都可以。
你用的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))
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)