一 限制上傳大小
1:限制總文件的大小 。 如 上傳10文件,設置最多總上傳大小為100M。
|
|
2:設置第每一個文件的大小 ,如果設置每 一個文件大小10M。
|
|
二用COS實現文件上傳
package cn.hx;import java.io.File;import java.io.IOException;import java.io.PRintWriter;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.oreilly.servlet.MultipartRequest;import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;import com.oreilly.servlet.multipart.FileRenamePolicy;/** * 在Cos中就一個類, * MultipartRequest它是request的包裝類。 */public class CosServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse resp)throws ServletException, IOException { //第一步:聲明文件的保存目錄 String path = getServletContext().getRealPath("/up"); //第二步:文件傳 //聲明文件重新取名的策略 FileRenamePolicy rename = new DefaultFileRenamePolicy(); MultipartRequest req = new MultipartRequest(request,path,1024*1024*100,"UTF-8",new MyRename());// //第三步:顯示信息, resp.setContentType("text/html;charset=UTf-8"); PrintWriter out = resp.getWriter(); out.print("文件名稱1:"+req.getOriginalFileName("img1")); out.print("<br/>新名稱:"+req.getFilesystemName("img1")); out.print("<br/>類型1:"+req.getContentType("img1")); out.print("<br/>大小1:"+req.getFile("img1").length()); out.print("<br/>說明:"+req.getParameter("desc1")); if(req.getContentType("img1").contains("image/")){ out.print("<img src='"+request.getContextPath()+"/up/"+req.getFilesystemName("img1")+"'></img>"); } }}class MyRename implements FileRenamePolicy{ public File rename(File file) { String fileName = file.getName(); String extName = fileName.substring(fileName.lastIndexOf(".")); String uuid = UUID.randomUUID().toString().replace("-",""); String newName = uuid+extName;//abc.jpg file = new File(file.getParent(),newName); return file; }}
三下載
即可是get也可以是post。
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
String name = req.getParameter("name");
//第一步:設置響應的類型
resp.setContentType("application/force-download");
//第二讀取文件
String path = getServletContext().getRealPath("/up/"+name);
InputStream in = new FileInputStream(path);
//設置響應頭
//對文件名進行url編碼
name = URLEncoder.encode(name, "UTF-8");
resp.setHeader("Content-Disposition","attachment;filename="+name);
resp.setContentLength(in.available());
//第三步:開始文件copy
OutputStream out = resp.getOutputStream();
byte[] b = new byte[1024];
int len = 0;
while((len=in.read(b))!=-1){
out.write(b,0,len);
}
out.close();
in.close();
}
新聞熱點
疑難解答