web项目获取前端用户上传的图片并保存

web项目获取用户上传的图片

我写的这些都是我在日常学习中遇到的问题,希望能对大家有帮助,也当做给自己的一份笔记。我自己也是网上找的一些资料学的可能不太好,如有错误,仅供参考

1.首先我们要使我们的web项目能够接收到前端网页上传过来的图片使用的到的jar包有 commons-fileupload-1.4.jar,commons-io-2.5.jar 这两个包,
下载方法1:我上传的连接
下载好了可以直接跳过方法二的下载过程,
下载方法2:
2.commons-io.jar包下载地址:http://commons.apache.org/proper/commons-io/.

在这里插入图片描述
在这里插入图片描述

commons-fileupload.jar下载地址:http://commons.apache.org/proper/commons-fileupload/
在这里插入图片描述
在这里插入图片描述
3.下载完成解压选择里面的第一个jar包导入项目即可,这里只贴出一张图,io包也是第一个 。
在这里插入图片描述
准备工作准备好了,下面就要开始上代码了。
前端网页:

<body>
<%--  使用方法method="post" 这里必须给他加上类型  enctype="multipart/form-data"--%>
<form action="/servlet?method=xx" method="post" enctype="multipart/form-data">
<%--  提交后调用xx方法--%>
    <input type="hidden" name="method" value="xx">
    <img id="image" class="image"/>
   <input id="imageFile" type="file" name="imageFile" accept="image/png,image/jpg,image/jpeg,image/bmp"/>
    <input type="submit" name="method" value="提交">
</form>
//导入jquerey 用于回显图片 ,没有jquery也没事,只是页面上不会显示你选择的图片,
<script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script>
    //当选着文件后内容被改变调用方法
    $("#imageFile").change(function () {
        var file = this.files[0];
        if (window.FileReader) {
            var reader = new FileReader();
            reader.readAsDataURL(file);
            reader.onloadend = function (e) {
                $("#image").attr("src", e.target.result);
            };
        }
    });
</script>
</body>

后端代码:

//这里使用的是注解方式
@WebServlet(urlPatterns = "/servlet")
//使用的BaseServlet工具类,没有的直接继承 HttpServlet 写在dopost方法中也可以
public class servlet extends BaseServlet {
    public void xx() throws Exception {
        //创建一个 获取解析器的 对象
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //获取解析器
        ServletFileUpload sfu = new ServletFileUpload(factory);
        //使用解析器去解析request对象 获取到的是form表里的所有内容 有表单项或者文件项
        HttpServletRequest request = getRequest();
        List<FileItem> fileItems = sfu.parseRequest(request);
        
        for (FileItem fileItem : fileItems) {
            //判断是不是表单项(自我了解:表单里就能展示的内容) , 如果是文件或者其他返回false
            if (fileItem.isFormField()) {
                //如果是表单里面,并且不是文件的内容,就将他放入对象的属性中 这里我们没有做其他属性所以只有一个图像文件
            } else {
                //获取这个文件夹的绝对路径 :给一个文件夹的相对路径帮你获取绝对路径
                String realPath = this.getServletContext().getRealPath("/ytx");
                System.out.println(realPath);
                //搞一个uuid 用于放在图片名称前面 以免图片重复名称
                String uuid = CommonUtils.uuid();
                System.out.println(uuid);
                //获取图片的名称 并加上uuid
                String filename = uuid+fileItem.getName() ;
                //使用目录绝对路径和文件名创建目标文件
                File file = new File(realPath, filename);
                //将文件写出到创建好的文件中,
                fileItem.write(file);
                //这里就是图片的路径了 
                String 图片的相对路径 = "ytx/" + filename;
                System.out.println(图片的相对路径);
            }
        }
        System.out.println("结束");
    }

}

上传的图片是在编译后项目下的文件夹里,就是out 里面的文件夹里才会看到你的图片。
好了希望大家都能学废,,哈哈

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值