图片文件上传

一、文件上传条件:

  1、依赖表单,请求方式为post, enctype="multipart/form-data"

  2、表单中有file类型的input

二、提交文件上传的表单,不需要页面跳转,用jquery.form.js插件。以ajax方式提交表单

 1 function submitUpload(){
 2     var option = {
 3             url:path+"/upload/uploadPic.do",//上传的url
 4             dataType:"text",//回调值的数据类型
 5             success:function(responseText){
 6                 var jsonObject = $.parseJSON(responseText);
 7                 //图片回显
 8                 $("#imgsImgSrc").attr("src",jsonObject.realPath);
 9                 //图片相对路径用于数据库保存
10                 $("#imgs").val(jsonObject.relativePath);
11                 //页面保存上次访问路径
12                 $("#lastRealPath").val(jsonObject.realPath);
13             },
14             error:function(){
15                 alert("系统错误");
16             }
17     };
18     //使用ajax方式提交表单
19     $("#form111").ajaxSubmit(option);
20 }

三、在springMVC配置文件中设置

<!-- 复杂类型文件上传 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxInMemorySize" value="1024000"/>
    </bean>

四、文件服务器设置为只读

1 <init-param>
2             <param-name>readonly</param-name>
3             <param-value>false</param-value>
4         </init-param>

五、创建文件上传方法

@Controller
@RequestMapping("/upload")
public class EbUploadController {

    @RequestMapping("/uploadPic.do")
    public void uploadPic(HttpServletRequest request,PrintWriter pw,String lastRealPath) throws IOException {
        MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
        //获得input类型的name属性
        Iterator<String> inputNames = req.getFileNames();
        String inputName = inputNames.next();
        //获得文件
        MultipartFile file = req.getFile(inputName);
        //将文件转化成字节数组
        byte[] fileBytes = file.getBytes();

        //定义文件名
        String fileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
        Random random = new Random();
        for(int i=0;i<3;i++) {
            fileName = fileName + random.nextInt(10);
        }
        //获得原始文件名
        String oriName = file.getOriginalFilename();
        //获得后缀名
        String suffix = oriName.substring(oriName.lastIndexOf("."));
        String realPath = ECPSUtils.readProp("upload_file_path")+"/upload/"+fileName + suffix;
        String relativePath = "/upload/" + fileName + suffix;

        //不同主机文件上传,创建jersey客户端
        Client client = Client.create();
        //判断比较上次文件路径是否为空,如果不为空,则需要先删除上次图片
        if(StringUtils.isNotBlank(lastRealPath)) {
            WebResource wr = client.resource(lastRealPath);
            wr.delete();
        }

        //指定上传的绝对路径
        WebResource wr = client.resource(realPath);
        //文件上传
        wr.put(fileBytes);

        //回传绝对路径与相对路径
        JSONObject jo = new JSONObject();
        jo.accumulate("realPath", realPath);
        jo.accumulate("relativePath", relativePath);
        String responseText = jo.toString();
        pw.print(responseText);

    }
}

原文地址:https://www.cnblogs.com/cat-fish6/p/9384931.html

时间: 2024-10-10 21:24:23

图片文件上传的相关文章

.Net Core 图片文件上传下载

当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. 一.开发环境 毋庸置疑,宇宙第一IDE VisualStudio 2017 二.项目结构 FilesController 文件上传下载控制器 PictureController 图片上传下载控制器 Return_Helper_DG 返回值帮助类 三.关键代码 1.首先我们来看Startup.cs

SpringMvc MultipartFile 图片文件上传

spring-servlet.xml 1 <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> 2 <bean id="multipartResolver" 3 class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 4 <property name="defaultEncoding&qu

Android图片文件上传实例

原文:Android图片文件上传实例 源代码下载地址:http://www.zuidaima.com/share/1550463718132736.htm 支持拍照图片上传和从手机相册中获取图片上传到服务器端的功能 源码截图

js的FileReader实现图片文件上传、预览

js的FileReader实现图片文件上传.预览 FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL.Data URL是一项特殊的技术,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件.使用Data URL的好处是,您不需要额外再发出一个HTTP 请求到服务器端取得额外的资料:而缺点便是,网页的大小可能会变大.它适合应用在内嵌小图片,不建议将大图像文件编码成Data URL来使用.您的图像文件不能够超过浏览器限定的大小,否则无法读取图像文件.1

js实现图片文件上传的心得

今天研究一下图片上存的一个实现方法,由于上周没写技术周记,这次一定要写好! 那么问题来了:PHP处理图片上传时要求JQ实现数据的交互,怎么办? 这里涉及到的一个logo上传的需求,根据radio选择是否更新logo,同时form表单将以js事件处理 <div class="comLogo sbox"> <div class="CLheader">公司logo:</div> <div class="ui-imgsel

利用Selenium实现图片文件上传的两种方式介绍

在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当开发直接使用file类型的input实现图片文件的上传时,实例:<input type="file" name=''filename"> 我们可以直接利用Selenium提供的方法实现文件上传,但是因为依赖开发的实现,而且目前实现基本都会利用框架,所以这种实现方式有很

多图片/文件上传 - SwfUpload/PlUpload

<文件上传利器SWFUpload使用指南> <前端上传组件Plupload使用指南>

jquery mobile 表单提交 图片/文件 上传

jquerymobile 下面 form 表单提交 和普通html没区别,最主要是 <form 要加一个 data-ajax='false' 否则 上传会失败 1  html代码 <!doctype html><html><head>    <meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8&qu

Ueditor结合七牛云及百度云存储(JAVA版,ueditor-1.4.3)实现图片文件上传

[前言] 之前研究了ueditor直接上传图片文件到七牛云以及百度云存储,见下面两篇文章: http://uikoo9.com/blog/detail/ueditor-for-bcs http://uikoo9.com/blog/detail/ueditor-for-qiniu 另外还有一篇ueditor-1.4.3-jsp的使用教程: http://uikoo9.com/blog/detail/how-to-use-ueditor 今天实现了ueditor可配置选择上传到七牛还是百度还是本地,