Javaweb开发,提交文章中的图片上传功能2021.11.25

1.已经设置好富文本编辑器后,接下来来实现其中的图片上传功能。

第一步,导入相关jar包,在下载的kindeditor文件中,jsp文件夹下,lib文件下的三个jar包复制

粘贴到WEB-INF下的lib目录

 第二步,部署相关的servlet,在servlet下新建UploadImageServlet,

我们使用到apache commons fileupload包来实现文件上传

这个包的功能可以在官网上学习,搜索apache commons fileupload。

主页有user guide,点击可以查看实现功能的原理

//创建硬盘存储
DiskFileItemFactory factory = new DiskFileItemFactory();

//设置临时存放路径
ServletContext servletContext = this.getServletConfig().getServletContext();
File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);


// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);

//解析用户的请求
List<FileItem> items = upload.parseRequest(request);

还要规定上传文件大小限制

接下来写代码

try{
            DiskFileItemFactory factory = new DiskFileItemFactory();
            factory.setSizeThreshold(1024*10);
            factory.setRepository(tmpFile);
            ServletFileUpload upload = new ServletFileUpload(factory);
            //最大允许上传大小
            upload.setFileSizeMax(1024*1024*3);
            //可能会上传多个请求,利用item来进行遍历查询
            List<FileItem> items = upload.parseRequest(request);
            Iterator<FileItem> iter = items.iterator();
            String message = "";
            while(iter.hasNext()){
                FileItem item = iter.next();
                String fileName = item.getName();
                long fileSize = item.getSize();
                if(!item.isFormField()){
                    //检查文件大小
                    if(item.getSize()>1024*1024*3){
                        message = message + "文件" + fileName + "上传超过限制" + upload.getFileSizeMax();
                        obj.put("error",1);
                        obj.put("message",message);
                    }else {
                        //获取文件的扩展名
                        String fileExt = fileName.substring(fileName.lastIndexOf(".")+1).toLowerCase();
                        //文件名重写
                        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
                        String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
                        File uploadedFile = new File(savePath,newFileName);
                        item.write(uploadedFile);
                        String url = "/upload/" + newFileName;
                        obj.put("error",0);
                        obj.put("url",url);
                    }
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

如果出现upload文件夹不存在的情况,可以将web设置为静态资源

 

 图片上传成功

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值