springmvc图片上传

配置虚拟目录
在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加:
<Context docBase="F:\develop\upload\temp" path="/pic" reloadable="false"/>

访问http://localhost:8080/pic即可访问F:\develop\upload\temp下的图片。

也可以通过eclipse配置:

单图片上传

在springmvc.xml配置

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>

id必须为multipartResolver

图片上传为异步

异步上传图片   jquery.form.js  将模拟一个下面的form   ajax 异步提交上去

jsp中书写:

function uploadPic(){
    var options = {
            url : "/upload/uploadPic.do",
            type : "post",
            dataType : "json",
            success : function(data){
                //回显
                $("#allUrl").attr("src",data.path);
            }
    }
    $("#jvForm").ajaxSubmit(options);
}

<form id="jvForm" action="edit.do" method="post">

<tr>
          <td width="20%" class="pn-flabel pn-flabel-h"></td>
            <td width="80%" class="pn-fcontent">
                       <img width="100" height="100" id="allUrl"/>
                        <input type="hidden" name="imgUrl" id="imgUrl"/>
                        <input type="file" name="pic" οnchange="uploadPic()"/>
                    </td>
                </tr>

</form>

类的书写

@Controller
public class UploadController {

    //上传图片 异步的
    @RequestMapping(value = "/upload/uploadPic.do")
    public void uploadPic(MultipartFile pic,HttpServletRequest request
            ,HttpServletResponse response) throws Exception{
        
        System.out.println(pic.getOriginalFilename());
        //分布式文件 系统  FastDFS
        String ext = FilenameUtils.getExtension(pic.getOriginalFilename());
        String name = UUID.randomUUID().toString() + "." + ext;
        
        String path = "/upload/" + name;
        
        //全路径
        String url = request.getSession().getServletContext().getRealPath("") + path;
        //保存到指定位置
        pic.transferTo(new File(url));
        
        JSONObject jo = new JSONObject();
        jo.put("path", path);
        response.setContentType("application/json;charset=UTF-8");
        response.getWriter().write(jo.toString());
        
    }
}

MultipartFile pic的pic对应的是 <input type="file" name="pic" οnchange="uploadPic()"/>的name


多张图片上传
参数修改为MultipartFile[] pics的pics对应的是 <input type="file" name="pics" οnchange="uploadPic()"/>的name,这个input标签还有加上multiple=‘multiple’属性


富文本编辑器图片上传

//富文本编辑器上传图片
    @RequestMapping(value = "/upload/uploadFck.do")
    public void uploadFck(HttpServletRequest request,HttpServletResponse response) throws IOException, Exception{
        //无敌版接收图片
        //spring  
        MultipartRequest mr = (MultipartRequest)request;
        //里面只有图片  没有文本
        Map<String, MultipartFile> fileMap = mr.getFileMap();
        Set<Entry<String, MultipartFile>> entrySet = fileMap.entrySet();
        for (Entry<String, MultipartFile> entry : entrySet) {
            MultipartFile pic = entry.getValue();
            //分布式文件 系统  FastDFS
            String path = uploadService.uploadPic(pic.getBytes(), pic.getOriginalFilename(), pic.getSize());
            JSONObject jo = new JSONObject();
            jo.put("url", Constants.IMG_URL + path);
            jo.put("error", 0);
            response.setContentType("application/json;charset=UTF-8");
            response.getWriter().write(jo.toString());
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC是一个基于Java的开源框架,用于构建Web应用程序。它采用了MVC(Model-View-Controller)的架构模式,可以让开发人员更容易地分离关注点并实现高效的代码组织。 在Spring MVC中实现图片的上传和下载是相对简单的。下面是一个简单的步骤说明: 1. 图片上传: 首先,需要在Spring MVC的配置文件中配置一个用于上传文件的MultipartResolver。然后,创建一个Controller方法用于处理文件上传请求。在这个方法中,可以通过HttpServletRequest对象获取上传的文件,并以合适的方式保存到服务器上,例如保存到本地文件系统或将其存储到数据库中。 2. 图片下载: 为了实现图片下载功能,需要创建一个用于处理下载请求的Controller方法。在这个方法中,可以根据请求参数获取图片的存储路径或ID,并根据这个信息获取图片的数据。然后,可以将图片数据写入HttpServletResponse对象的输出流中,从而实现将图片发送给客户端进行下载的功能。 需要注意的是,在处理图片上传和下载的过程中,可能需要对上传的文件大小进行限制,并进行一些安全性的校验,以防止恶意文件上传或下载。 总结起来,Spring MVC可以通过配置MultipartResolver实现图片的上传功能,并通过Controller方法处理上传和下载请求,将图片保存或发送给客户端。通过这些步骤的实现,可以实现方便可靠的图片上传和下载功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值