使用 IDEA 软件 实现文件上传
结合JSP,form表单及Servlet,实现文件上传
一 JSP界面(HTML界面)配置
实现文件上传需要配置form表单 基本设置,
其中固定两个值是——提交方式只能为post,enctype是固定的
<form id="uploadFile" method=post enctype="multipart/form-data" onsubmit="return upload()">
<input type="file" id="wenJian"/>
<input type="submit" value="文件上传" name="subUpload"/>
</form>
二 Servlet配置
首先必须先设置如下代码
@WebServlet(name = "ShopServlet",urlPatterns = "/ShopServlet")
@MultipartConfig(maxFileSize = 1024*1024*2) //标识Servlet支持文件上传,设置文件上传大小
//第一点就不多说了
//第二点MultipartConfig表示支持文件文件上传,如果没有注解,无法获取文件上传的内容
//maxFileSize和注解一起使用,表示设置上传文件最大大小,1024*1024*2如表示文件大小为2MB
三 核心-实现上传文件
//1、设置上传文件类型(图片类型)(可以设置允许上传的图片格式,后面介绍分割前缀和后缀)
private static String ALLOW_IMG_TYPE = "image/.png;image/.jpg;image/.gif;image/.jpeg";
//2、获取注解里设置的值
private MultipartConfig config = ShopServlet.class.getAnnotation(MultipartConfig.class);
//3、核心代码
{
private void updShop(HttpServletRequest request) throws IOException {
try{
1、获取文件上传路径(这里是绝对路径)
String uploadFilePath = "D:\\images\\";
2、创建File对象,判断该文件夹是否存在,不存在创建文件夹
File file = new File(uploadFilePath);
if (!file.exists){
file.mkdirs(); //mkdirs()表示创建
}
3、创建Part对象,Part在这里就表示上传的文件
Part part = request.getPart("subUpload"); //JSP界面设置的文件上传name属性
4、获取上传的文件名称
String fileName = part.getSubmitterFileName(); //getSubmitterFileName()用于获取上传的文件
5、获取上传文件的格式类型
String houZhui = part.getContentType(); //getContentType()用于获取文件的后缀如.jpg
6、List<String> list = Arrays.asList(ALLOW_IMG_TYPE.split(";"));
//这里将允许上传的文件格式以指定字符分割为字符串,通过Arrays.asList将其转为数组,将其放入字符串格式的集合中
7、通过集合.contains()方法判断上传文件格式是否符合
if (list.contains(houZhui)){}
8、通过part对象.write()将上传文件写入指定文件夹中
part.write(uploadFilePath + fileName + houZhui);
}catch(IllegalStateException ex){
//IllegalStateException 用于处理上传文件大小超过指定文件大小异常
e.printStackTrace();
}
}
}
四、扩展,上传文件使用UUID产生随机数写入文件夹中
String uuidRandom = String.valueOf(UUID.randomUUID().toString().replace("-","").substring(0,4));
/*
通过UUID.randomUUID()产生随机数,因为UUID产生的数字前后都有-作为分割,
所以使用replace()方法进行替换,
并通过substring(0,4)截取UUID的四位随机数,
得到UUID的结果 如 4j22
*/
这就是文件上传的步骤和UUID的扩展使用,配上我上传文件的JSP界面样式