ssm框架下的文件上传和文件下载

最近在做一个ssm的项目,遇到了添加附件和下载的功能,在网上查了很多资料,发现很多都不好用,经过摸索,发现了一套简便的方法,和大家分享一下。
1.文件上传
前台页面使用了easyui,代码如下:

<table>
<tr>
<td>附件</td>
<td>
<input class="easyui-filebox" type="file" name="file1" id="file1"><a href="javascript:imageUpload()" class="easyui-linkbutton">上传</a>
</td>
<td>
<input type="hidden"  id="ssFile" name="ssFile"> <!--用于文件名回显-->
</td>
</tr>
<table

JS方法调用后台:

function imageUpload(){
		var file1 = document.getElementById("file1");
		var ssFile = document.getElementById("ssFile");
		    ssFile.value = file1.value.substring(12);    //取出文件名,并赋值回显到文本框,用于向后台传文件名
        $.ajaxFileUpload({
            url : ‘${pageContext.request.contextPath}/bug/uploadFile.do‘, //用于文件上传的服务器端请求地址
            fileElementId : ‘file1‘, //文件上传空间的id属性  <input type="file" id="file" name="file" />
            type : ‘post‘,
            dataType : ‘text‘, //返回值类型 一般设置为json
            success : function(data, status) //服务器成功响应处理函数
            {
                alert("文件上传成功");

            },
            error : function(data, status, e)//服务器响应失败处理函数
            {
                alert("文件上传失败");

            }
        });
    }

  后台实现:

@RequestMapping(value="/uploadFile.do" ,produces="text/html;charset=utf-8" )
    public @ResponseBody String importPicFile1(
  @RequestParam MultipartFile file1,HttpServletRequest request){  

              Map<String,Object> map= new HashMap<String,Object>();
               if(file1.isEmpty()){
                    map.put( "result", "error");
                    map.put( "msg", "上传文件不能为空" );
              } else{
                    String originalFilename=file1.getOriginalFilename();
                    String fileBaseName=FilenameUtils.getBaseName(originalFilename);
                    Date now = new Date();
                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    String floderName=fileBaseName+"_" +df.format(now);
                     try{
                           //创建要上传的路径
                         File fdir = new File("D:/file");
                         if (!fdir.exists()) {
                        	 fdir.mkdirs();
                        	 }
			  //文件上传到路径下
                          FileUtils. copyInputStreamToFile(file1.getInputStream(), new File(fdir,originalFilename));
                           //coding
                          map.put( "result", "success");  

                    } catch (Exception e) {
                          map.put( "result", "error");
                          map.put( "msg",e.getMessage());  

                    }
              }

  2.文件下载

前台页面:

<table>
<tr>
<td>附件</td>
<td><a href="" id="ssUrl" class="easyui-linkbutton">下载</a>
</td>
</tr>
</table>

JS方法:

$("#ssUrl").attr(‘href‘,"${pageContext.request.contextPath}/bug/download?filename="+fileName) //将后台的路径和文件名赋值给a标签 fileName需要自己从数据库中查出 

后台方法:

/**
     * 文件下载
     * @throws IOException
     */
    @RequestMapping(value="/download",method=RequestMethod.GET)
    public void download(@RequestParam(value="filename")String filename,
            HttpServletRequest request,
            HttpServletResponse response) throws IOException {
        //模拟文件,myfile.txt为需要下载的文件
        String path = "D:\\file"+"\\"+filename;
        //获取输入流
        InputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));
        //转码,免得文件名中文乱码
        filename = URLEncoder.encode(filename,"UTF-8");
        //设置文件下载头
        response.addHeader("Content-Disposition", "attachment;filename=" + filename);
        //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
        response.setContentType("multipart/form-data");
        BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
        int len = 0;
        while((len = bis.read()) != -1){
            out.write(len);
            out.flush();
        }
        out.close();
    }

  本人亲测可用,大家有什么意见可以交流,第一次写博客,如有疏漏,请多多指教!

原文地址:https://www.cnblogs.com/noahpk/p/8949862.html

时间: 2024-07-31 15:14:38

ssm框架下的文件上传和文件下载的相关文章

SSM框架-SpringMVC 实例文件上传下载

SSM框架-SpringMVC 实例文件上传下载 2017-04-17 09:38 4497人阅读 评论(6) 收藏 举报  分类: java基础(3)  目录(?)[+] 目录(?)[+] 林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程免费下载 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload

第一零四天上课 PHP TP框架下的文件上传

<?php namespace Home\Controller; use Home\Controller\EmptyController; class TestController extends EmptyController { public function test() { if(empty($_POST['submit'])) { $this->display(); } else { $upload = new \Think\Upload(); //实例化文件上传类 第一个斜杠不能少

SSM框架中使用文件上传的示例

1.首先要导入文件上传需要的jar包  commons-fileupload-1.3.2.jar  用于文件上传,但是只有这个包也是不行的 ,  commons-fileupload-1.3.2.jar 依赖于  commons-io-2.5.jar 一起使用 2.在配置文件中配置文件解析器,默认是关闭的,所以要打开一下,在spring-mvc配置文件中配置一下 <!-- 文件解析器 --> <bean id="multipartResolver" class=&qu

springmvc和servlet下的文件上传和下载(存文件目录和存数据库Blob两种方式)

项目中涉及了文件的上传和下载,以前在struts2下做过,今天又用springmvc做了一遍,发现springmvc封装的特别好,基本不用几行代码就完成了,下面把代码贴出来: FileUpAndDown.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"%> <html> <head> <title>using commons Uplo

centos 6.5下安装文件上传下载服务

centos 6.5下安装文件上传下载服务 由于每次在CentOS中要下载一些配置文件到物理机,和上传一些文件到服务器,导致来回的开启ftp软件有点麻烦,这里我们可以使用文件上传下载服务,来解决上传和下载的问题. 1.登录服务器 2.执行命令:yum -y install lrzsz 3.执行rz命令进行文件上传.(注意,如果文件为二进制文件则需要执行:rz -be) 4. 执行[sz 文件名]命令进行文件下载.

linux下将文件上传到svn服务器

linux下将文件上传到svn服务器 摘自:https://blog.csdn.net/sky_yangge/article/details/41544773 2014年11月27日 16:47:57 sky样 阅读数 7526 1.首先将svn的所指定的目录checkout到本地目录下: 使用svn co +服务器的地址(path),输入服务器的密码即可,此时会自动在本地目录下同步服务器你所指定的目录及里面所有的文件(其中co 即是 checkout的简写) 例如:svn co hettp:/

ASP.NET MVC下使用文件上传

这里我通过使用uploadify组件来实现异步无刷新多文件上传功能. 1.首先下载组件包uploadify,我这里使用的版本是3.1 2.下载后解压,将组件包拷贝到MVC项目中 3.  根目录下添加新文件夹Uploads,然后新建控制器UploadifyController.cs using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using S

Razor强类型视图下的文件上传

域模型Users.cs using System;using System.Collections.Generic;using System.Linq;using System.Web; namespace FileUpload.Models{    public class Users    {        public string UserName { get; set; } public string Password { get; set; }    }} 控制器:FilesUplo

框架----Django之文件上传

一.文件上传 1. 浏览器访问 http://127.0.0.1:8000/f1/ http://127.0.0.1:8000/f2/ 2. urls from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^f1/', views.f1), url(r'^f2/