解決這種大文件上傳不太可能用web上傳的方式,只有自己開發(fā)插件或是當(dāng)門客戶端上傳,或者用現(xiàn)有的ftp等。
臨潼網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司2013年至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
1)開發(fā)一個(gè)web插件。用于上傳文件。
2)開發(fā)一個(gè)FTP工具,不用web上傳。
3)用現(xiàn)有的FTP工具。
下面是幾款不錯(cuò)的插件,你可以試試:
1)Jquery的uploadify插件。具體使用。你可以看幫助文檔。
這個(gè)似乎真有問題,把循環(huán)讀取和寫出是不是要改成這樣更好一些
while ((read = input.read(buffBytes,0,1024)) != -1) {
allLength += read;
os.write(buffBytes, 0, read);
}
JVM可以調(diào)到那么大?
如果和JAVA環(huán)境相關(guān),那就和代碼無關(guān)了。(估計(jì)上面這個(gè)小文件下載沒問題吧)
記得JVM只能達(dá)到物理內(nèi)存的1/4?
不能一次讀取完,大文件很容易內(nèi)存溢出。參考下:
public?static?void?download(String?path,?HttpServletResponse?response)?throws?Exception?{???
try?{???
File?file?=?new?File(path);???
if?(file.exists())?{???
String?filename?=?file.getName();???
InputStream?fis?=?new?BufferedInputStream(new?FileInputStream(?file));???
response.reset();???
response.setContentType("application/x-download");
response.addHeader("Content-Disposition","attachment;filename="+?new?String(filename.getBytes(),"iso-8859-1"));
response.addHeader("Content-Length",?""?+?file.length());???
OutputStream?toClient?=?new?BufferedOutputStream(response.getOutputStream());???
response.setContentType("application/octet-stream");???
byte[]?buffer?=?new?byte[1024?*?1024?*?4];???
int?i?=?-1;???
while?((i?=?fis.read(buffer))?!=?-1)?{???
toClient.write(buffer,?0,?i);??
}???
fis.close();???
toClient.flush();???
toClient.close();???
try?{
response.wait();
}?catch?(InterruptedException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}??
}?else?{???
PrintWriter?out?=?response.getWriter();???
out.print("script");???
out.print("alert(\"not?find?the?file\")");???
out.print("/script");???
}???
}?catch?(IOException?ex)?{???
PrintWriter?out?=?response.getWriter();???
out.print("script");???
out.print("alert(\"not?find?the?file\")");???
out.print("/script");???
}???
}