限制上传大小、用COS实现文件上传与下载 五(63)
一 限制上传大小
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();
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。