文件上传是每个java开发者必须掌握的。文件上传有很多种实现方式,但其实也大同小异。笔人在这里为大家介绍一种我习惯用的,上传文件的方式。大家先看代码,最后我会分享我的源码给大家。
- 1、首先要准备一下需要用到的jar包。
- commons-fileupload-1.2.1.jar
-commons-io-1.4.jar
可以从[(http://commons.apache.org/)]下载,当然,我的项目源码里也有
然后开始写代码。
- commons-fileupload-1.2.1.jar
public static String fileUpload(HttpServletRequest request,HttpServletResponse response)throws Exception
{
//允许上传的文件类型
String fileType = "mp3,mp4,video,rmvb,pdf,txt,xml,doc,gif,png,bmp,jpeg";
//允许上传的文件最大大小(100M,单位为byte)
int maxSize = 1024*1024*100;
response.addHeader("Access-Control-Allow-Origin", "*");
//文件要保存的路径
String savePath = request.getRealPath("/") + "save/";
response.setContentType("text/html; charset=UTF-8");
//检查目录
File uploadDir = new File(savePath);
if ( !uploadDir.exists())
{
uploadDir.mkdirs();
}
if ( !uploadDir.canWrite())
{
return getError("上传目录没有写权限!");
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024 * 1024); //设置缓冲区大小,这里是1M
factory.setRepository(uploadDir); //设置缓冲区目录
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List items = upload.parseRequest(request);
Iterator it = items.iterator();
FileItem item = null;
String fileName = "";
String name = "";
String extName = "";
String newFileName = "";
while (it.hasNext())
{
item = (FileItem)it.next();
fileName = item.getName();
if (null == fileName || "".equals(fileName))
{
continue;
}
//判断文件大小是否超限
if (item.getSize() > maxSize)
{
item.delete();
JOptionPane.showMessageDialog(null, "文件大小超过限制!应小于" + maxSize
/ 1024 / 1024 + "M");
return;
}
//判断文件类型是否匹配
// System.getProperties().getProperty("file.separator"))
//获取文件名称
name = fileName.substring(fileName.lastIndexOf("\\") + 1,
fileName.lastIndexOf("."));
//获取文件后缀名
extName = fileName.substring(fileName.indexOf(".") + 1).toLowerCase().trim();
//判断是否为允许上传的文件类型
if ( !Arrays.<String> asList(fileType.split(",")).contains(extName))
{
item.delete();
JOptionPane.showMessageDialog(null, "文件类型不正确,必须为" + fileType
+ "的文件!");
return;
}
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
newFileName = name + df.format(new Date()) + "." + extName;
}
File uploadedFile = new File(savePath, newFileName);
item.write(uploadedFile);
return "success";
}
上面代码就已经ok了。我的一些参数是写死的,比如允许文件上传的大小,还有文件的类型。大家最好是写在一个配置文件中,然后去读取这个配置文件,得到里面的参数。虽然配置文件里的参数也是写死,但是意义不同,作为一个程序员你就是给别人提供方便的,不可能每次已改就要动里面的代码,只需要改配置文件就可以了。这也是需要我们做到智能化。
当然,上面代码只是做到上传的功能,下面我会分享我的源码,源码里面就是写在配置文件里的,然后,如果上传文件不符合要求,就将信息返回到前台可视化显示。
下面分享一下我的源码:文件上传
如果遇到问题大家可以互相交流、切磋!
时间: 2024-12-25 05:20:20