精华内容
下载资源
问答
  • 之前感觉图片上传下载不就是通过流的形式么,最近做起来还真是棘手啊,所以说有的是就得先做后想才对。  大体思路:把把图片存到文件夹中,然后把图片的名字存入数据库中。因公司用的Spring框架,所以只用Spring...

      之前感觉图片上传下载不就是通过流的形式么,最近做起来还真是棘手啊,所以说有的是就得先做后想才对。

      大体思路:把把图片存到文件夹中,然后把图片的名字存入数据库中。因公司用的Spring框架,所以只用Spring框架完成了上传,之后改变了方法完成的上传及前台显示,还是把网上找的Spring的上传下载贴出来,估计以后用得上,下载没有亲测~~

      Spring上传:

      springmvc.xml必须配置:1.

    <bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8"/>

     

    2.WEB-INF/lib下必加入:commons-fileupload.jarcommons-io-1.4.jar二个包

    3.提交的form表单中属性加: enctype="multipart/form-data" 

      单文件上传(以下为三种方法,第二种亲测):

    @Controller
    public class FileUploadController {
    
        @RequestMapping(value = "/upload", method = RequestMethod.POST)
        public ModelAndView onSubmit(HttpServletRequest request,
                HttpServletResponse response, BindException errors)
                throws Exception {
    
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest
                    .getFile("file");
    
            String name = multipartRequest.getParameter("name");
            System.out.println("name: " + name);
            // 获得文件名:
            String realFileName = file.getOriginalFilename();
            System.out.println("获得文件名:" + realFileName);
            // 获取路径
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "images/";
            // 创建文件
            File dirPath = new File(ctxPath);
            if (!dirPath.exists()) {
                dirPath.mkdir();
            }
            File uploadFile = new File(ctxPath + realFileName);
            FileCopyUtils.copy(file.getBytes(), uploadFile);
            request.setAttribute("files", loadFiles(request));
            return new ModelAndView("success");
        }
    
        @RequestMapping(value = "/upload2", method = RequestMethod.POST)
        public ModelAndView onSubmit2(HttpServletRequest request,
                HttpServletResponse response, BindException errors)
                throws Exception {
    
            // 转型为MultipartHttpRequest
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            // 根据前台的name名称得到上传的文件
            MultipartFile file = multipartRequest.getFile("file");
            // 获得文件名:
            String realFileName = file.getOriginalFilename();
            // 获取路径
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
            // 创建文件
            File dirPath = new File(ctxPath);
            if (!dirPath.exists()) {
                dirPath.mkdir();
            }
            File uploadFile = new File(ctxPath + realFileName);
            FileCopyUtils.copy(file.getBytes(), uploadFile);
            request.setAttribute("files", loadFiles(request));
            return new ModelAndView("success");
        }
    
        @RequestMapping(value = "/upload3", method = RequestMethod.POST)
        public String upload(@RequestParam("file")
        MultipartFile image, HttpServletRequest request) throws IOException {
    
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
            System.out.println("路径:" + ctxPath);
            File file = new File(ctxPath + "/" + image.getOriginalFilename());
            // FileCopyUtils.copy(image.getBytes(),new
            // File(ctxPath+"/"+image.getOriginalFilename()));
            try {
                image.transferTo(file); // 保存上传的文件
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            request.setAttribute("files", loadFiles(request));
            return "success";
        }

         多文件上传(没有亲自测试,不过同时参考以下代码写的):

    // 多文件上传
        @RequestMapping(value = "/upload4", method = RequestMethod.POST)
        public ModelAndView fileUpload(HttpServletRequest request,
                HttpServletResponse response, BindException errors)
                throws Exception {
    
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
    
            File file = new File(ctxPath);
            if (!file.exists()) {
                file.mkdir();
            }
            String fileName = null;
            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                // 上传文件名
                // System.out.println("key: " + entity.getKey());
                MultipartFile mf = entity.getValue();
                fileName = mf.getOriginalFilename();
                File uploadFile = new File(ctxPath + fileName);
                FileCopyUtils.copy(mf.getBytes(), uploadFile);
            }
            request.setAttribute("files", loadFiles(request));
            return new ModelAndView("success");
        }
    
        // @ModelAttribute("files")//此属性用于初始类时调用,但上传文件后不能时时反应上传文件个数,不适合动态数据
        public List<String> loadFiles(HttpServletRequest request) {
            List<String> files = new ArrayList<String>();
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
            File file = new File(ctxPath);
            if (file.exists()) {
                File[] fs = file.listFiles();
                String fname = null;
                for (File f : fs) {
                    fname = f.getName();
                    if (f.isFile()) {
                        files.add(fname);
                    }
                }
            }
            return files;
        }

     

      文件下载:

    @RequestMapping("/download/{fileName}")
        public ModelAndView download(@PathVariable("fileName")
        String fileName, HttpServletRequest request, HttpServletResponse response)
                throws Exception {
    
            response.setContentType("text/html;charset=utf-8");
            request.setCharacterEncoding("UTF-8");
            java.io.BufferedInputStream bis = null;
            java.io.BufferedOutputStream bos = null;
    
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
            String downLoadPath = ctxPath + fileName;
            System.out.println(downLoadPath);
            try {
                long fileLength = new File(downLoadPath).length();
                response.setContentType("application/x-msdownload;");
                response.setHeader("Content-disposition", "attachment; filename="
                        + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
                response.setHeader("Content-Length", String.valueOf(fileLength));
                bis = new BufferedInputStream(new FileInputStream(downLoadPath));
                bos = new BufferedOutputStream(response.getOutputStream());
                byte[] buff = new byte[2048];
                int bytesRead;
                while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                    bos.write(buff, 0, bytesRead);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (bis != null)
                    bis.close();
                if (bos != null)
                    bos.close();
            }
            return null;
        }
    }

     

      spring.xml(必须配置)

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"    
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">
        <!-- 
            自动搜索@Controller标注的类
            用于指明系统从哪个路径下寻找controller,然后提前初始化这些对象。
        -->
        <context:component-scan base-package="net.liuzd.web" />
    
        <!--  ③:对模型视图名称的解析,即在模型视图名称添加前后缀 -->
        <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
    
       
        <bean id="multipartResolver"
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8">
            <property name="maxUploadSize">
                <value>104857600</value>
            </property>
            <property name="maxInMemorySize">
                <value>4096</value>
            </property>
        </bean>
    </beans>

     

    success.jsp

    <%@ taglib  prefix="c" uri="/WEB-INF/c.tld"%>
    <h1>Upload Successful</h1>
        <c:forEach var="month" items="${files}">
            <li><a href="${pageContext.request.contextPath}/download/${month}.do">${month}</a></li>
        </c:forEach>
      <hr><br>
      <a href="${pageContext.request.contextPath}/index.jsp">返回</a>

    web.xml(必须配置)

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        
        <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>/WEB-INF/classes/log4j.properties</param-value>
        </context-param>
    
        <context-param>
            <param-name>log4jRefreshInterval</param-name>
            <param-value>60000</param-value>
        </context-param>
        <context-param>
            <param-name>log4jExposeWebAppRoot</param-name>
            <param-value>false</param-value>
        </context-param>
    
        <listener>
            <listener-class>
                org.springframework.web.util.Log4jConfigListener
            </listener-class>
        </listener>
    
        <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>
                org.springframework.web.filter.CharacterEncodingFilter
            </filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>false</param-value>
            </init-param>
        </filter>
    
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>*.do</url-pattern>
        </filter-mapping>
    
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>*.jsp</url-pattern>
        </filter-mapping>
    
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

    ================================================================================================================

    以上有些没有亲自测试,以下为自己写的图片上传及前台显示

      com.tayh.projectCenter.service.book.impl(BookServiceImpl)

     /**上传图片
         * @param request  内置对象
         * @param response  内置对象
         * @param user  用户类
         * @param throws Exception  抛出异常
         * @return  
         * 
         */
        public void upload(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "file1", required = false) MultipartFile file , @ModelAttribute("book") com.tayh.projectCenter.vo.Book book){
            //获取上传文件
            if("".equals(file)||null==file){
                //上传图片为空或null,不进行操作            
            }else{
                //上传图片处理
                String file_path=request.getRealPath("/")+"upload";
                String file_real_file = "upload" + File.separator + "book" + File.separator;
                StringBuffer listFiles = new StringBuffer();
                StringBuffer listFileNames = new StringBuffer();
                    if(!file.isEmpty()){
                        String fileName = file.getOriginalFilename();
                        System.out.println(fileName);
                        File files = new File(file_path, fileName);
                        if(!files.exists()){
                            files.mkdirs();
                        }
                        if(!fileName.equals(null) && !"".equals(fileName)){
                            try {
                                file.transferTo(files);
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                            listFiles.append(file_real_file + fileName + ",");
                        listFileNames.append(fileName);
                }
                String f=listFileNames.toString();
                book.setBookPic(f);  
            }
       }
        
        /**将图片读到页面上
         * @param request  内置对象
         * @param response  内置对象
         * @param throws Exception  抛出异常
         * @return  
         * 
         */
        public void dumpImage(HttpServletRequest request, HttpServletResponse response){ 
            String paramPath = request.getParameter("path"); 
            String path ="";
            if(paramPath == null){ 
            path = (String) request.getAttribute("path"); 
            }else{ 
            try {
                path = new String(paramPath.getBytes("ISO8859-1"), "UTF-8");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            } 
            String picPath = request.getRealPath("/")+"upload"+ File.separator+path;
            InputStream in = null; 
            BufferedInputStream bis = null; 
            OutputStream out = null; 
            BufferedOutputStream bos = null; 
    
            // 判断文件是否存在 
            File file = new File(picPath); 
            if (!file.exists() || file.isDirectory()){ 
            return; 
            } 
            try { 
            in = new FileInputStream(picPath); 
            bis = new BufferedInputStream(in); 
    
            byte[] data = new byte[1024]; 
            int bytes = 0; 
            out = response.getOutputStream(); 
            bos = new BufferedOutputStream(out); 
            while ((bytes = bis.read(data, 0, data.length)) != -1) { 
            bos.write(data, 0, bytes); 
            } 
            bos.flush(); 
            } catch (Exception e) { 
            e.printStackTrace(); 
            } finally { 
            try { 
            if (bos != null) 
            bos.close(); 
            if (out != null) 
            out.close(); 
            if (bis != null) 
            bis.close(); 
            if (in != null) 
            in.close(); 
            } catch (IOException e) { 
            e.printStackTrace(); 
            } 
          } 
        }

    前台页面bookAdd.jsp

    <TR height="20px">
         <td align="center">图片上传</td>
         <td><input type="file" name="file1" id="file1" /></td>
    </TR>

    前台接收borrowBook.jsp

    <td>
             <img id="bookImage" src="dumpImage.do?path=${list.bookPic }" style="height:120px;width:100px;" />
    </td>

     

     

    转载于:https://www.cnblogs.com/wangxuewei8023/archive/2013/01/23/2871959.html

    展开全文
  • 前一段时间用到文件上传,好久没有写这个东西,有的东西也忘记了。所以本篇博客BZ决定记载一下,一方面自己回顾加深一下,另一方面供各位程序员学习。 希望大神们对本文不对的地方进行批评指正! 先在我们的html...

    前一段时间用到文件上传,好久没有写这个东西,有的东西也忘记了。所以本篇博客BZ决定记载一下,一方面自己回顾加深一下,另一方面供各位程序员学习。

    希望大神们对本文不对的地方进行批评指正!

    先在我们的html页面写上上传文件的文本框及图片显示所在的DIV,如下:

     1 <div class="form-group">
     2                             <label class="col-sm-2 control-label no-padding-right" id="lb_topimg"> 顶部图片: </label>
     3                             <div class="col-sm-4">
     4                                 <a href="javascript:;" class="a-upload">
     5                                     <input type="file" id="topimg" name="topimg" οnchange="ajaxFileUpload('topimg', 'img_topimg',2)">点击这里上传图片
     6                                 </a><span style="color:#EC2020;font-size:10px">[ 建议上传图片208px*160px ]</span>
     7                             </div>
     8                             <div class="col-sm-3" id="img_topimg">
     9 
    10                             </div>
    11                         </div>
    View Code

    BZ在图片上传用到了Ajax,并且传多去三个参数,下面粘上js调用代码块:

     1 function ajaxFileUpload(id, contentid,imgid) {
     2     $.ajaxFileUpload
     3     (
     4         {//<input type="file" id="farmlogo" name="farmlogo" οnchange="ajaxFileUpload('farmlogo', 'img_farmlogo',1)">
     5             url: '../Handler/DataHandler.ashx', //用于文件上传的服务器端请求地址
     6             secureuri: false, //一般设置为false
     7             fileElementId: id, //文件上传空间的id属性  <input type="file" id="file" name="file" />
     8             //dataType: 'json', //返回值类型 一般设置为json
     9             success: function (data, status)  //服务器成功响应处理函数
    10             {
    11                 var obj = eval('(' + $(data).text() + ')');
    12                 $("#" + contentid).html("");
    13                 $("#" + contentid).append("<div class='open' style='width:100px;height:50px;float:left;'><img id='uploadimg_" + contentid + imgid "' class='img-responsive'  style='width:100px;height:50px;' src='" + obj.msg.PicUrl + "' /><img style='position:relative;right:6px;float:right' src='/Images/del.gif' οnclick='RemoveImg(this);' border='0' /> </div><input id='hhimg"+ contentid + imgid "' name='imgurl" + imgid + "' value='" + obj.msg.PicUrl + "' type='hidden'/>")
    14             },
    15             error: function (data, status, e)//服务器响应失败处理函数
    16             {
    17                 alert(e);
    18             }
    19         }
    20     )
    21     return false;
    22 }
    View Code

    在这里给大家介绍一下上传三个参数的原因:input的id是为了区分图片的分组情况(假设要上传所需的两组图片),div的id是确定图片将显示在哪个div中。

    附上服务器端请求地址代码块:

    public void ProcessRequest(HttpContext context)
            {
                //context.Response.ContentType = "text/plain";
                //context.Response.Write("Hello World");
             
                //在此处写入您的处理程序实现。
                HttpFileCollection files = context.Request.Files;
                if (files != null && files.Count > 0)
                {
                    HttpPostedFile file = files[0];
    
                    string tmpPath = context.Server.MapPath("/Upload/");
                    string fileName = DateTime.Now.ToString("yyyyMMddHHmissfff") + System.IO.Path.GetFileName(file.FileName);
    
                    file.SaveAs(tmpPath + fileName);
                    context.Response.Clear();
                    context.Response.Write(@"{
                        status : 'success', 
                        msg: { 
                            PicUrl : '" + "/upload/" + fileName + @"'
                        }
                    }");
                    context.Response.End();
                }
            }
    View Code

    图片的命名格式是以年月日+图片的名称。Upload是将图片上传在Upload文件夹里。

    看到这里大家应该都明白,重点来了!!!

    多图片上传呢??其实很简单,就是将第二段代码块中的一句话注释掉就OK!

    $("#" + contentid).html("");

    即将图片所在的div不再清空!!

    可以写一个js规定图片路径的储存,运用循环的方式将选择的图片路径保存在数据库!大功告成!

    感谢大家关观看本篇博客,希望更多和我一样的小菜积极学习,同样希望大神们对本篇博客的不足之处提出意见!谢谢大家!

     

    转载于:https://www.cnblogs.com/A-aron/p/5867381.html

    展开全文
  • 之前感觉图片上传下载不就是通过流的形式么,最近做起来还真是棘手啊,所以说有的是就得先做后想才对。  大体思路:把把图片存到文件夹中,然后把图片的名字存入数据库中。因公司用的Spring框架,所以只用Spring...

    之前感觉图片上传下载不就是通过流的形式么,最近做起来还真是棘手啊,所以说有的是就得先做后想才对。

      大体思路:把把图片存到文件夹中,然后把图片的名字存入数据库中。因公司用的Spring框架,所以只用Spring框架完成了上传,之后改变了方法完成的上传及前台显示,还是把网上找的Spring的上传下载贴出来,估计以后用得上,下载没有亲测~~

      Spring上传:

      springmvc.xml必须配置:1.

    <bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8"/>

    2.WEB-INF/lib下必加入:commons-fileupload.jarcommons-io-1.4.jar二个包

    3.提交的form表单中属性加: enctype="multipart/form-data" 

      单文件上传(以下为三种方法,第二种亲测):

    @Controller
    public class FileUploadController {
    
    
        @RequestMapping(value = "/upload", method = RequestMethod.POST)
        public ModelAndView onSubmit(HttpServletRequest request,
                HttpServletResponse response, BindException errors)
                throws Exception {
    
    
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest
                    .getFile("file");
    
    
            String name = multipartRequest.getParameter("name");
            System.out.println("name: " + name);
            // 获得文件名:
            String realFileName = file.getOriginalFilename();
            System.out.println("获得文件名:" + realFileName);
            // 获取路径
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "images/";
            // 创建文件
            File dirPath = new File(ctxPath);
            if (!dirPath.exists()) {
                dirPath.mkdir();
            }
            File uploadFile = new File(ctxPath + realFileName);
            FileCopyUtils.copy(file.getBytes(), uploadFile);
            request.setAttribute("files", loadFiles(request));
            return new ModelAndView("success");
        }
    
    
        @RequestMapping(value = "/upload2", method = RequestMethod.POST)
        public ModelAndView onSubmit2(HttpServletRequest request,
                HttpServletResponse response, BindException errors)
                throws Exception {
    
    
            // 转型为MultipartHttpRequest
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            // 根据前台的name名称得到上传的文件
            MultipartFile file = multipartRequest.getFile("file");
            // 获得文件名:
            String realFileName = file.getOriginalFilename();
            // 获取路径
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
            // 创建文件
            File dirPath = new File(ctxPath);
            if (!dirPath.exists()) {
                dirPath.mkdir();
            }
            File uploadFile = new File(ctxPath + realFileName);
            FileCopyUtils.copy(file.getBytes(), uploadFile);
            request.setAttribute("files", loadFiles(request));
            return new ModelAndView("success");
        }
    
    
        @RequestMapping(value = "/upload3", method = RequestMethod.POST)
        public String upload(@RequestParam("file")
        MultipartFile image, HttpServletRequest request) throws IOException {
    
    
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
            System.out.println("路径:" + ctxPath);
            File file = new File(ctxPath + "/" + image.getOriginalFilename());
            // FileCopyUtils.copy(image.getBytes(),new
            // File(ctxPath+"/"+image.getOriginalFilename()));
            try {
                image.transferTo(file); // 保存上传的文件
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            request.setAttribute("files", loadFiles(request));
            return "success";
        }

    多文件上传(没有亲自测试,不过同时参考以下代码写的):

    // 多文件上传
        @RequestMapping(value = "/upload4", method = RequestMethod.POST)
        public ModelAndView fileUpload(HttpServletRequest request,
                HttpServletResponse response, BindException errors)
                throws Exception {
    
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
    
            File file = new File(ctxPath);
            if (!file.exists()) {
                file.mkdir();
            }
            String fileName = null;
            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                // 上传文件名
                // System.out.println("key: " + entity.getKey());
                MultipartFile mf = entity.getValue();
                fileName = mf.getOriginalFilename();
                File uploadFile = new File(ctxPath + fileName);
                FileCopyUtils.copy(mf.getBytes(), uploadFile);
            }
            request.setAttribute("files", loadFiles(request));
            return new ModelAndView("success");
        }
    
        // @ModelAttribute("files")//此属性用于初始类时调用,但上传文件后不能时时反应上传文件个数,不适合动态数据
        public List<String> loadFiles(HttpServletRequest request) {
            List<String> files = new ArrayList<String>();
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
            File file = new File(ctxPath);
            if (file.exists()) {
                File[] fs = file.listFiles();
                String fname = null;
                for (File f : fs) {
                    fname = f.getName();
                    if (f.isFile()) {
                        files.add(fname);
                    }
                }
            }
            return files;
        }

    文件下载:

    @RequestMapping("/download/{fileName}")
        public ModelAndView download(@PathVariable("fileName")
        String fileName, HttpServletRequest request, HttpServletResponse response)
                throws Exception {
    
            response.setContentType("text/html;charset=utf-8");
            request.setCharacterEncoding("UTF-8");
            java.io.BufferedInputStream bis = null;
            java.io.BufferedOutputStream bos = null;
    
            String ctxPath = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "\\" + "images\\";
            String downLoadPath = ctxPath + fileName;
            System.out.println(downLoadPath);
            try {
                long fileLength = new File(downLoadPath).length();
                response.setContentType("application/x-msdownload;");
                response.setHeader("Content-disposition", "attachment; filename="
                        + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
                response.setHeader("Content-Length", String.valueOf(fileLength));
                bis = new BufferedInputStream(new FileInputStream(downLoadPath));
                bos = new BufferedOutputStream(response.getOutputStream());
                byte[] buff = new byte[2048];
                int bytesRead;
                while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                    bos.write(buff, 0, bytesRead);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (bis != null)
                    bis.close();
                if (bos != null)
                    bos.close();
            }
            return null;
        }
    }

    spring.xml(必须配置)
    <?xml version="1.0" encoding="UTF-8" ?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"    
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">
        <!-- 
            自动搜索@Controller标注的类
            用于指明系统从哪个路径下寻找controller,然后提前初始化这些对象。
        -->
        <context:component-scan base-package="net.liuzd.web" />
    
        <!--  ③:对模型视图名称的解析,即在模型视图名称添加前后缀 -->
        <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
    
       
        <bean id="multipartResolver"
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8">
            <property name="maxUploadSize">
                <value>104857600</value>
            </property>
            <property name="maxInMemorySize">
                <value>4096</value>
            </property>
        </bean>
    </beans>

    success.jsp

    <%@ taglib  prefix="c" uri="/WEB-INF/c.tld"%>
    <h1>Upload Successful</h1>
        <c:forEach var="month" items="${files}">
            <li><a href="${pageContext.request.contextPath}/download/${month}.do">${month}</a></li>
        </c:forEach>
      <hr><br>
      <a href="${pageContext.request.contextPath}/index.jsp">返回</a>

    web.xml(必须配置)

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        
        <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>/WEB-INF/classes/log4j.properties</param-value>
        </context-param>
    
        <context-param>
            <param-name>log4jRefreshInterval</param-name>
            <param-value>60000</param-value>
        </context-param>
        <context-param>
            <param-name>log4jExposeWebAppRoot</param-name>
            <param-value>false</param-value>
        </context-param>
    
        <listener>
            <listener-class>
                org.springframework.web.util.Log4jConfigListener
            </listener-class>
        </listener>
    
        <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>
                org.springframework.web.filter.CharacterEncodingFilter
            </filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>false</param-value>
            </init-param>
        </filter>
    
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>*.do</url-pattern>
        </filter-mapping>
    
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>*.jsp</url-pattern>
        </filter-mapping>
    
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

    以上有些没有亲自测试,以下为自己写的图片上传及前台显示

    /**上传图片
         * @param request  内置对象
         * @param response  内置对象
         * @param user  用户类
         * @param throws Exception  抛出异常
         * @return  
         * 
         */
        public void upload(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "file1", required = false) MultipartFile file , @ModelAttribute("book") com.tayh.projectCenter.vo.Book book){
            //获取上传文件
            if("".equals(file)||null==file){
                //上传图片为空或null,不进行操作            
            }else{
                //上传图片处理
                String file_path=request.getRealPath("/")+"upload";
                String file_real_file = "upload" + File.separator + "book" + File.separator;
                StringBuffer listFiles = new StringBuffer();
                StringBuffer listFileNames = new StringBuffer();
                    if(!file.isEmpty()){
                        String fileName = file.getOriginalFilename();
                        System.out.println(fileName);
                        File files = new File(file_path, fileName);
                        if(!files.exists()){
                            files.mkdirs();
                        }
                        if(!fileName.equals(null) && !"".equals(fileName)){
                            try {
                                file.transferTo(files);
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                            listFiles.append(file_real_file + fileName + ",");
                        listFileNames.append(fileName);
                }
                String f=listFileNames.toString();
                book.setBookPic(f);  
            }
       }
        
        /**将图片读到页面上
         * @param request  内置对象
         * @param response  内置对象
         * @param throws Exception  抛出异常
         * @return  
         * 
         */
        public void dumpImage(HttpServletRequest request, HttpServletResponse response){ 
            String paramPath = request.getParameter("path"); 
            String path ="";
            if(paramPath == null){ 
            path = (String) request.getAttribute("path"); 
            }else{ 
            try {
                path = new String(paramPath.getBytes("ISO8859-1"), "UTF-8");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            } 
            String picPath = request.getRealPath("/")+"upload"+ File.separator+path;
            InputStream in = null; 
            BufferedInputStream bis = null; 
            OutputStream out = null; 
            BufferedOutputStream bos = null; 
    
            // 判断文件是否存在 
            File file = new File(picPath); 
            if (!file.exists() || file.isDirectory()){ 
            return; 
            } 
            try { 
            in = new FileInputStream(picPath); 
            bis = new BufferedInputStream(in); 
    
            byte[] data = new byte[1024]; 
            int bytes = 0; 
            out = response.getOutputStream(); 
            bos = new BufferedOutputStream(out); 
            while ((bytes = bis.read(data, 0, data.length)) != -1) { 
            bos.write(data, 0, bytes); 
            } 
            bos.flush(); 
            } catch (Exception e) { 
            e.printStackTrace(); 
            } finally { 
            try { 
            if (bos != null) 
            bos.close(); 
            if (out != null) 
            out.close(); 
            if (bis != null) 
            bis.close(); 
            if (in != null) 
            in.close(); 
            } catch (IOException e) { 
            e.printStackTrace(); 
            } 
          } 
        }

    前台页面bookAdd.jsp

    <TR height="20px">
         <td align="center">图片上传</td>
         <td><input type="file" name="file1" id="file1" /></td>
    </TR>

    前台接收borrowBook.jsp

    <td>
             <img id="bookImage" src="dumpImage.do?path=${list.bookPic }" style="height:120px;width:100px;" />
    </td>
    文章来源:点击打开链接
    展开全文
  • 这个方法含义:文件状态改变时的钩子,添加文件上传成功和上传失败时都会被调用 我们本地没有显示成功,就可以使用这个方法 2,在methods里面添加 这样就可以解决我们本地图片不能显示的问题。 ...

    1,首先根据组件库模板引入一个el-upload,选用自己想要的一个模块,以下我做的就是一个简单实例

    在这里插入图片描述
    具体的属性,可以直接去看文档,说下解决方法
    1,绑定一个on-change方法,
    这个方法含义:文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用
    我们本地没有显示成功,就可以使用这个方法

    2,在methods里面添加
    在这里插入图片描述
    这样就可以解决我们本地图片不能显示的问题。

    展开全文
  • auve上传doc,xls,pdf 等等文件时,由于没有图片显示空白,感觉不友好,明明上传了,有内容,但是显示全空白, 因为我上传的内容既有图片,又有文件,所以我不能采用列表式,因为这样我无法预览图片, 改造...
  • vue实现上传图片显示图片

    千次阅读 2020-08-21 19:27:24
    显示的比较突兀,所以在点击div的时候判断是否存在了上传文件的input,如果没有的话就新建一个上传文件的控件,且隐藏起来,不会占据页面位置,在change的时候将文件的数据获取到并传到页面的img里面,实现类似vue...
  • $(function() { $('#upload_image').change(function(event) { // HTML5 js 对象的获取 var files = event.target.files, file; if (files && files.length > 0) { // 获取目前上传文件 file
  • 用户反馈:图片上传过程中,如果网络比较慢,会发现上传图片后没有一点反应,体验性很差 解决思路:通过XMLHttpRequest的progress来实现监听图片上传的进度,实时显示百分比,后台保存图片成功后再将图片转为Base64...
  • 公司部署在服务器上的项目,上传头像功能以前一直没有问题,突然上传图片都打不开显示不了,打开文件报系统文件错误,项目无报错。 但是自己本地的项目运行起来上传图片没有问题。排查问题后发现上传过程中保存到...
  • 上传文件图片,实例,绝对可用,你只要发布在TOMCA服务器上就可以。上传了还可以在首页现实出你的图片没有数据库的上传显示。 绝对可用。 绝对可用,和真实
  • <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!--#include file="conn.asp"--> <...sqlstr="Insert into tb_upfile_folder(file_name,file_size,file_...请问显示文件上传成功,为什么文件夹里面没有图片
  • 这个是基于某个同志的资源...另外由于缓存资源的原因没有考虑上传按钮的添加,上传图片上传,ajax为异步请求。 至于后台是C#没啥好看的,就是数据库插入 这里小小的向大家要1分,不要骂我,下东西都没分了,拜谢。
  • 在做项目的时候,要做这样的效果:上传文件的时候,file按钮用图片显示。怎么做呢?很纠结。上网查了很多资料,发现都是用js或其他语言实现的。代码很复杂,语言基础不好的人,根本都不了解,不知道什么意思。所以...
  • 主要包括三个方面,如何配置集群,静态文件如何处理,上传文件问题怎么处理。本次测试是1个apache集成两个tomcat。 1、配置集群 (1)下载软件 apache:httpd-2.2.17-win32-x86-no_ssl.msi tomcat:
  • 使用HTML5中的FileReader实现图片上传时使图片即时显示,图片显示等比例缩放。 实现效果: FileReader: 构造函数:FileReader() 属性: FileReader.error:表示在读取文件时发生的错误。 FileReader....
  • 使用springboot 图片上传显示

    万次阅读 2018-10-14 10:31:07
    ###文件上传 springboot版本2.0.4 #是否启用文件上传功能 spring.servlet.multipart.enabled=true #指定文件写入磁盘后的阈值,默认为0 spring.servlet.multipart.file-size-threshold=0 #指定文件的位置, 没有指定...
  • 在平常的开发中,难免遇到上传图片的问题,又没有测试服务器的时候,你和前端对接接口,发现图片上传之后回显不出来,是一个磁盘路径:(如下图)像这种情况可以通过tomact下的功能实现,代码实现很简单,并且返回的...
  • ajx异步上传图片显示

    千次阅读 2018-10-10 11:32:02
    利用ajax+springmvc完成上传图片显示 前言:还是由于前期没有系统的学习,又坑了自己一把。 第一点:SpringMVC在接受图片,需要在springmvc中配置解析上传文件的解析器。 第二点:ajax上传文件时,使用的...
  • css实现上传文件,file按钮用图片显示

    千次阅读 2011-06-01 16:52:00
    在做项目的时候,要做这样的效果:上传文件的时候,file按钮用图片显示。怎么做呢?很纠结。上网查了很多资料,发现都是用js或其他语言实现的。代码很复杂,语言基础不好的人,根本都不了解,不知道什么意思。...
  • 摘要:.NET源码,上传下载,图片上传 Manage Media To MVC3.0编写的图片文件上传管理程序。环境下上传任何大小的文件,没有flash和silverlight。在上传文件之前可验证文件大孝类型等,上传显示进度(包括大小,速度,...
  • js读取file文件时有一个FileReader的onloadend方法,即成功读取文件...我遇到的问题:同时选多个文件上传,并且把图片转成base64用于预览,结果只保留了最后一个图片的base64,前面图片的base64没有存下来。 解决办法...
  • 博客上传图片无法显示 有些日子,不知不觉就过去了… 有些坑,不知不觉就进了,我也很无奈啊 废话不说了,这里参照了————大佬的文档 简单总结下: 站点下配置文件_config.yml修改,找到post_asset_...
  • 通过url链接将图片上传oss图片显示不完整问题 问题:在之前通过链接上传图片的时候,都是先获取inputStream流,然后通过available()方法获取文件大小。但是通过这种方法获取到的文件大小是不准确的,因为这个时候...
  • 一开始我是用的是下面这种方法,测试了几个图片没有问题,然后随便去网上下载了个图片测试,竟然报了空指针,获取不到高度和宽度,于是我右键查看图片属性,详细信息竟然都是空的 这是一个jpg格式的图片,然后...
  • django实现图片上传和图片显示

    万次阅读 热门讨论 2018-06-29 10:36:44
    在开始之前我们要确认环境中已经安装了Pillow,如果没有安装,可以通过命令pip install Pillow来安装,这个是python的图像处理库。第一步:数据库设置首先在项目中创建一个app。例如 python manage.py startapp app...
  • 一旦把所有文件上传至独立的网络服务器就会出现上述错误 百度了一大堆解决办法,什么修改配置文件,各种配置的修改,都TMD的扯淡 后来借鉴之前写文件的时候也出错 想了办法,把上传路径下的建立的文件删除 这下...
  • ASP.NET的图片上传显示

    千次阅读 2011-07-19 23:26:03
    上传 protected void btnUpload_Click(object sender, EventArgs e) { if (!filUpload.HasFile) { Alert("没有上传文件")

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,241
精华内容 496
关键字:

图片上传显示没有文件上传