上传文件的一些细节:
2011-11-24 12:13
309 查看
1、 文件上传中文乱码:upload.setHeaderEncoding(“ ”);
2、 普通输入项的乱码:item.getString(“ ”);
3、 防止用户不再文件上传的输入项输入上传文件:if(!filename.trim,eques(“”)){}
4、 临时文件删除问题:factory.setRepository(new File(this.getServletContext().getRealPath("/temp"));
……….
Is.close();
Fos.close();
Item.delete();
5、 上传文件保存位置:服务的安全性
不受服务器管理的目录:在c盘
外界不能访问的:在web-inf的子文件夹中
6、 防止上传文件的名字一样被覆盖掉:
给予为一个文件名
filename=UUID.randomUUID().toString()+ "_" + filename;
7、 在同一个文件夹下过多的
Hash目录
//产生目录结构的算法:hash目录
public String generateFilePath(String path,String filename){
//位运算?
int dir1 = filename.hashCode() & 0xf;//一级目录,让得到的hash码和一个十六进制得数进行与运算
int dir2 = (filename.hashCode()>>4) & 0xf; //二级目录
String savepath = path + "\\" + dir1 + "\\" + dir2;
File f = new File(savepath);
if(!f.exists()){ //若目录结构不存在,则要建一个目录
f.mkdirs(); //注意必须用mkdirs() 而不是mkdir()
}
return savepath;
}
8、、限制上传文件大小
upload.setFileSizeMax(1024*1024);
upload.setSizeMax(1024*1024*3);
9、 限制上传类型:
方法一:
String[] arr={“.jpg”,”.bmp”,”.avi”,”.txt”};
List fileType= Arrays.asList(arr);
方法二:
List fileType= Arrays.asList(“.jpg”,”.bmp”,”.avi”,”.txt”);
if(!filename.trim().equals("")){
filename=filename.substring(filename.lastIndexOf("\\")+1);//因为使用的不同浏览器进行访问,为了得到文件名
String var=filename.substring(filename.lastIndexOf("."));
if(!fileType.contains(var)){
request.setAttribute("message","上传的文件只能是.jpg,.bmp,.avi,.txt的格式!");
request.getRequestDispatcher("/message.jsp").forward(request, response);
return ;
}
}
10、 上传多个文件
11、 显示上传进度
ProgressListener接口 中的方法update()
ProgressListener接口 中的方法update()
l ProgressListener显示上传进度
ProgressListener progressListener = new ProgressListener() {
public void update(long pBytesRead, long pContentLength, int pItems) {
System.out.println("到现在为止, " + pBytesRead + " 字节已上传,总大小为 "
+ pContentLength);
}
};
upload.setProgressListener(progressListener);
l 以KB为单位显示上传进度
long temp = -1; //temp注意设置为类变量
long ctemp = pBytesRead /1024;
if (mBytes == ctemp)
return;
temp = mBytes;
2、 普通输入项的乱码:item.getString(“ ”);
3、 防止用户不再文件上传的输入项输入上传文件:if(!filename.trim,eques(“”)){}
4、 临时文件删除问题:factory.setRepository(new File(this.getServletContext().getRealPath("/temp"));
……….
Is.close();
Fos.close();
Item.delete();
5、 上传文件保存位置:服务的安全性
不受服务器管理的目录:在c盘
外界不能访问的:在web-inf的子文件夹中
6、 防止上传文件的名字一样被覆盖掉:
给予为一个文件名
filename=UUID.randomUUID().toString()+ "_" + filename;
7、 在同一个文件夹下过多的
Hash目录
//产生目录结构的算法:hash目录
public String generateFilePath(String path,String filename){
//位运算?
int dir1 = filename.hashCode() & 0xf;//一级目录,让得到的hash码和一个十六进制得数进行与运算
int dir2 = (filename.hashCode()>>4) & 0xf; //二级目录
String savepath = path + "\\" + dir1 + "\\" + dir2;
File f = new File(savepath);
if(!f.exists()){ //若目录结构不存在,则要建一个目录
f.mkdirs(); //注意必须用mkdirs() 而不是mkdir()
}
return savepath;
}
8、、限制上传文件大小
upload.setFileSizeMax(1024*1024);
upload.setSizeMax(1024*1024*3);
9、 限制上传类型:
方法一:
String[] arr={“.jpg”,”.bmp”,”.avi”,”.txt”};
List fileType= Arrays.asList(arr);
方法二:
List fileType= Arrays.asList(“.jpg”,”.bmp”,”.avi”,”.txt”);
if(!filename.trim().equals("")){
filename=filename.substring(filename.lastIndexOf("\\")+1);//因为使用的不同浏览器进行访问,为了得到文件名
String var=filename.substring(filename.lastIndexOf("."));
if(!fileType.contains(var)){
request.setAttribute("message","上传的文件只能是.jpg,.bmp,.avi,.txt的格式!");
request.getRequestDispatcher("/message.jsp").forward(request, response);
return ;
}
}
10、 上传多个文件
11、 显示上传进度
ProgressListener接口 中的方法update()
ProgressListener接口 中的方法update()
l ProgressListener显示上传进度
ProgressListener progressListener = new ProgressListener() {
public void update(long pBytesRead, long pContentLength, int pItems) {
System.out.println("到现在为止, " + pBytesRead + " 字节已上传,总大小为 "
+ pContentLength);
}
};
upload.setProgressListener(progressListener);
l 以KB为单位显示上传进度
long temp = -1; //temp注意设置为类变量
long ctemp = pBytesRead /1024;
if (mBytes == ctemp)
return;
temp = mBytes;
相关文章推荐
- 上传文件的一些实现细节
- Struts2文件上传一些小细节
- 上传文件的一些细节
- 上传文件的一些实现细节
- 关于SpringMVC上传文件的一些细节和需要注意的地方
- 上传文件的一些实现细节
- 上传文件的一些实现细节
- 上传文件的一些细节
- 最近写JSP页面的上传与下载发现的一些注意的细节
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据
- 常用JSP文件上传,下载的一些方法
- php实现文件上传的一些经验(摘录)
- 给ajaxfileupload上传文件时增加一些参数
- 文件上传表单 上传文件的细节 文件上传下载和数据库结合
- 文件读写的一些细节
- 注解及Servlet3.0的一些新特性及简单的文件上传
- 关于angular上传文件的一些心得
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据
- multipart/form-data请求与文件上传的细节
- springboot下csv文件下载需要注意得一些细节以及功能得完善