servlet文件上传

Servlet 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器。上传的文件可以是文本文件或图像文件或任何文档。

导入jar包

添加文件上传后,编码格式发生了改变,不能用getParameter来获取参数。
需要引入的 jar 文件:commons-fileupload-1.3.2、commons-io-2.5.jar。
创建包upload,用来存放上传文件

servletuploadt获取地址: https://pan.baidu.com/s/18jBRZZu2oV0SmxueTcWunw .
提取码:dkim
在这里插入图片描述

文件上传表单

在创建HTML文档时应注意:

  1. 表单 method 属性应该设置为 POST 方法,不能使用 GET 方法。
  2. 表单 enctype 属性应该设置为 multipart/form-data.
    (上传的文件是以二进制的形式上传的,所以重新设置了编码格式)
  3. 标签类型 type=“file”
<form  id="fm"  method="post" enctype="multipart/form-data">

 <label for="pic" class="col-sm-2 control-label">照片</label>

 <input  type="file" name="pic" class="form-control" id="pic" placeholder="照片">
   

后台srevlet代码

		DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        FileUpload fileUpload = new FileUpload(diskFileItemFactory);
		//中文乱码
		fileUpload.setHeaderEncoding("UTF-8");
		
        Map<String,String> map = new HashMap<>();
        try {
            List<FileItem> list = fileUpload.parseRequest(req);

            for (FileItem fileItem : list) {//FileItem 表单项
               if(fileItem.isFormField()){//判断是否是普通的表单项
                   map.put(fileItem.getFieldName(),fileItem.getString());

               }else{//说明是 文件上传的表单项,处理上传文件,将上传文件保存到服务器的硬盘中
                   //获得到upload的目录(拼接路径)
                   String path = this.getServletContext().getRealPath("/")+"upload"+ File.separator;
                   String fileName = UUID.randomUUID().toString();
                   String suffix = fileItem.getName().substring(fileItem.getName().lastIndexOf('.'));
                   
                   File file = new File(path+fileName+suffix);
                   fileItem.write(file);

                   //将路径存储到map中,以便存到数据库里
                   map.put(fileItem.getFieldName(),"/upload/"+fileName+suffix);
               }
                //System.out.println(fileItem.getFieldName()+":"+fileItem.getString()); //获得属性名
            }

//获得到upload的目录(拼接路径)
获得图片存放的路径
String path = this.getServletContext().getRealPath("/")+"upload"+ File.separator;
产生一个随机的ID,用来区别存放的图片的名字
String fileName = UUID.randomUUID().toString();
获得图片的后缀
String suffix = fileItem.getName().substring(fileItem.getName().lastIndexOf('.'));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值