天天看點

資源下載下傳與統計

如果用servlet傳回檔案流,用的是機房寬帶

ServletOutputStream out = response.getOutputStream();

String filepath = request.getRealPath("/")+"uploadfiles/";

if(null == request.getParameter("sonFilePath")){

System.out.println("無參數");

return;

}

if(null == request.getParameter("fileName")){

String sonFilePath = new String(request.getParameter("sonFilePath").getBytes("ISO8859_1"),"GB2312").toString();

String filename = new String(request.getParameter("fileName").getBytes("ISO8859_1"),"GB2312").toString();

System.out.println("DownloadFile filepath:" + filepath+sonFilePath);

System.out.println("DownloadFile filename:" + filename);

File file = new File(filepath +sonFilePath+"/"+ filename);

if(!file.exists()){

System.out.println(file.getAbsolutePath()+"檔案不存在");

//讀取檔案流

FileInputStream fileInputStream = new FileInputStream(file);

//下載下傳檔案

//設定響應頭和下載下傳儲存的檔案名

if(filename != null && filename.length() >0){

// response.setContentType("application/x-msdownload");

response.setContentType("application/zip");

response.addHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("gb2312"),"iso8859-1") + "");

response.addHeader("Content-Length", "" + file.length());

if(null != fileInputStream){

int filelen = fileInputStream.available();//filelen/1000k

//檔案太大時記憶體不能一次讀出,要循環

byte a[] = new byte[filelen];

fileInputStream.read(a);

out.write(a);

}

fileInputStream.close();

out.close();

如果用servlet 統計并跳轉到資源位址 可以使用cdn設定好的寬帶。減少機房壓力。

response.sendRedirect(filePath);

繼續閱讀