欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Web Application(程序)中的上傳打包壓縮下載(java)
上傳打包下載這些功能,在許多Web程序中都有涉及,做起來(lái)難免會(huì )遇到很多的問(wèn)題,特別是我:).下面就淺析下這些問(wèn)題:

第一部分:上傳

現在比較常用的上傳組件有commons-fileupload, jspSmartUpload, COS;自己寫(xiě)上傳組件的比較少了。我使用的是fileupload,用后推薦也大家使用,開(kāi)源免費可靠,很多框架spring, struts提供支持。

如果上傳文件要保存在服務(wù)器上,這個(gè)比較簡(jiǎn)單,form中加上enctype="multipart/form-data"

<form action="yourservlet" name="fileupload" method="post" enctype="multipart/form-data">

<input name="photofile" type="file" size="35">

</form>

在servlet中使用commons-fileupload的ServletFileUpload取得(parseRequest)上傳文件(一個(gè)或多個(gè)),寫(xiě)到(write)磁盤(pán)。

如果要把文件轉為二進(jìn)制保存到數據庫中,spring有相當好的封裝,可以自動(dòng)把文件轉換成二進(jìn)制流后用Hibernate存入數據庫。

1
binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());。

第二部分 打包

當用戶(hù)下載時(shí),可能想一次下載多個(gè)文件,而不是不停的點(diǎn)擊左鍵或者右鍵另存為,這個(gè)時(shí)候將這些文件打包就方便不少。

打包可以使用sun的zip包,也可以用ant的zip包,傳說(shuō)中前者不支持中文,最好還是ant了。目前只做過(guò)一級的,還沒(méi)有做過(guò)多級(指多層文件目錄)打包。下面的代碼中,fileURLList是一個(gè)文件地址列表。

1
Iterator it = fileURLList.iterator();
2
BufferedInputStream origin
= null;
3
String outFilename
="c:\\"+"models.zip";
4
FileOutputStream dest
= new FileOutputStream(outFilename); ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));
5
byte data[] = new byte[1024];
6
File f
= null;
7
FileInputStream fi
= null;
8
while(it.hasNext()) {
9
  String filename
= ((String)it.next()).replaceAll("\\\\", "\\\\\\\\");//地址轉換
10
  f = new File(filename);
11
  fi
= new FileInputStream(new File(filename));
12
  origin
= new BufferedInputStream(fi, 1024);
13
  ZipEntry entry
= new ZipEntry(f.getName());
14
 
out.putNextEntry(entry);
15
 
int count;
16
 
while((count = origin.read(data, 0, 1024)) != -1) {
17
   
out.write(data, 0, count);
18
    }

19
  origin.close();
20
}

21
out.flush();
22
out.close();
 上面的代碼還有待改進(jìn),雖然java的垃圾回收機制已經(jīng)很好,但是有些后續處理省不了,在后面的下載中會(huì )提到這些問(wèn)題。

第三部分 下載

處理下載碰到的問(wèn)題是最多的,我使用的框架是Turbine,這可能導致了更多的問(wèn)題。

第一類(lèi), 文件刪除

  即使調用了delete(),文件還是在那里。這是怎么回事?排除權限文件只讀問(wèn)題,那就是還有進(jìn)程在使用文件,所以要想刪除文件,必須保證它沒(méi)有被使用。上面的打包壓縮程序后來(lái)就沒(méi)有釋放掉資源,如果要刪除文件,就會(huì )刪除不了(沒(méi)有異常)。不過(guò)還可以在JVM退出時(shí)刪除。

1

if(!file.delete()) {
2
  dofi.deleteOnExit();
3
}

第二類(lèi),發(fā)生異常但不影響使用,過(guò)多的出錯信息可能讓tomcat掛掉。

1. getOutputStream() has already been called for this response異常。(Volecity)

很明顯,這個(gè)異常是因為getOutputStream被調用過(guò)。原來(lái)在Volecity模板中,已經(jīng)調用過(guò).所以就改變了一下模板,設為DirectResponseLayout,同時(shí)把doBuild方法置空。

其實(shí)這個(gè)問(wèn)題在jsp中也存在,比較少,解決辦法也是去掉調用過(guò)的getOutputStream() 。

2. ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error異常

這個(gè)異常通常是因為客戶(hù)端取消了下載,導致一些操作無(wú)法完成。比如說(shuō)outputstream.close().這時(shí)要釋放資源使用outputstream=null就可以了。不要顯式去close。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ZT - Java文件上傳下載_Christen_Istart
Asp.net MVC處理文件的上傳下載
基于SMB/JCIFS協(xié)議的共享文件上傳和下載
Java如何導入excel
下載文件
pdf2swf process阻塞問(wèn)題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久