首页 > 编程语言 >javaweb项目中的文件上传下载功能的实现

javaweb项目中的文件上传下载功能的实现

时间:2023-11-26 11:45:15浏览次数:46  
标签:文件 javaweb 上传下载 request upload fileName file new String

框架是基于spring+myBatis的。

 

前台页面的部分代码:

<form action="${ctx}/file/upLoadFile.do"method="post" enctype="multipart/form-data" id="form"><table><tbody ><tr ><td>上传文件:</td><td style="padding-left: 10px;"><input type="file" name="file" id="fileInput"></td><td style="padding-left: 80px;"><button type="submit" class="btn btn-primary btn-q btn-outline fa fa-upload"
           class="easyui-validatebox" data-options="required:true">上传</button></td></tr><tr><td colspan="2"><span style="color:red">*上传文件格式为xls,xlsx,txt,csv文件!</span>&nbsp;&nbsp;</td>
    </tr>
  </tbody>
</table></form>

 

 

{
  title : '操作',
  halign : 'center',
  align : 'center',
  width : 80,
  field : 'FILE_PATH',
  formatter: function(value,row,index){
  var path = "${ctx}/file/download.do?filePath=" + value ;
  var button = '<button type="button" class="btn btn-primary btn-q btn-outline fa fa-download" class="easyui-validatebox" 
data-options="required:true">下载</button>'; return "<a href='" + path + "'>" + button + "</a>";
}

 

上传功能的方法:

@RequestMapping("/upLoadFile")
    public String upload(@RequestParam(value = "file", required = false) MultipartFile file, ModelMap model, HttpServletRequest request) 
        throws Exception {
          //设置相对路径 String realPath = request.getSession().getServletContext().getRealPath("/upload");
          //获取文件的格式 String extention = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
          //对格式进行筛选 if(extention.equalsIgnoreCase("xls") || extention.equalsIgnoreCase("xlsx") || extention.equalsIgnoreCase("txt")
        || extention.equalsIgnoreCase("csv")) {
          //在路径下创建文件夹        File f = new File(realPath); String fileName = file.getOriginalFilename(); String uploadPath = realPath + File.separator + fileName; if(!f.exists()) { f.mkdir(); }
          //文件的传输 file.transferTo(new File(uploadPath)); Upload upload = new Upload(); upload.setFileName(fileName); upload.setFileLength(String.valueOf(file.getSize())); upload.setFileOwner(super.getLoginUser(request).getLoginId()); upload.setFilePath("/upload/" + fileName);
          //将文件的基本信息存到数据库 fileQueryService.saveFile(upload); request.setAttribute("info","文件上传成功!"); } else { request.setAttribute("info","文件类型不正确,请上传格式为xls,xlsx,txt,csv文件!"); } return "page/file/fileInteraction"; }

 下载功能的方法:

@RequestMapping("/download")
    public String download(String filePath, HttpServletRequest request,
                           HttpServletResponse response) {
        try {
          //获取文件名 String fileName = filePath.substring(filePath.lastIndexOf("/")+1); System.out.println(filePath); response.setCharacterEncoding("utf-8"); response.setContentType("multipart/form-data");
          //处理下载弹出框名字的编码问题 response.setHeader("Content-Disposition", "attachment;fileName=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ));           //获取文件的下载路径 String path = request.getSession().getServletContext().getRealPath(filePath); System.out.println(path);
          //利用输入输出流对文件进行下载 InputStream inputStream = new FileInputStream(new File(path)); OutputStream os = response.getOutputStream(); byte[] b = new byte[2048]; int length; while ((length = inputStream.read(b)) > 0) { os.write(b, 0, length); } // 这里主要关闭。 os.close(); inputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 返回值要注意,要不然就出现下面这句错误! //java+getOutputStream() has already been called for this response return null; }

 

 

参考文章:http://blog.ncmem.com/wordpress/2023/11/26/javaweb%e9%a1%b9%e7%9b%ae%e4%b8%ad%e7%9a%84%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e4%b8%8b%e8%bd%bd%e5%8a%9f%e8%83%bd%e7%9a%84%e5%ae%9e%e7%8e%b0/

欢迎入群一起讨论

 

 

标签:文件,javaweb,上传下载,request,upload,fileName,file,new,String
From: https://www.cnblogs.com/songsu/p/17856672.html

相关文章

  • 文件读取和写入工具类
    JavaIO流共涉及40多个类,但基类只有四个:InputStream/Reader:所有输入流的基类,前者是字节输入流,后者是字符输入流。OutputStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流。BufferedReader整行读取publicstaticStringreadFile(Stringfilename){......
  • python 截取xlsx文件中某个时间段的数据
    Python截取xlsx文件中某个时间段的数据引言在日常工作和数据分析中,我们经常需要处理各种各样的数据文件。而其中一种较为常见的文件格式是Excel文件,尤其是.xlsx文件。Python作为一种强大的编程语言,提供了丰富的库和工具来处理Excel文件。本文将介绍如何使用Python截取.xlsx文件中......
  • python 读取文件名中带有循环变量
    标题:Python中使用循环变量读取文件名的方法**摘要:**在Python编程中,我们经常需要读取并处理多个文件。而文件名中的循环变量可以帮助我们更加灵活地处理这种情况。本文将介绍如何使用Python中的循环变量来读取文件名,并给出相关的代码示例和详细说明。1.引言在实际的数据处理中,我......
  • python 读取文件 with open
    Python读取文件withopen流程图flowchartTDA[开始]-->B[打开文件]B-->C[读取文件内容]C-->D[关闭文件]D-->E[结束]类图classDiagramclass文件文件:+打开文件()文件:+读取文件内容()文件:+关闭文件()代码实现打开......
  • python 单击按钮弹出选择文件的窗口
    Python单击按钮弹出选择文件的窗口在编写Python程序时,有时我们需要让用户选择一个文件,例如读取文件内容进行处理,或者保存处理结果到指定的文件中。为了实现这个功能,我们可以使用tkinter库提供的文件选择对话框。tkinter库简介tkinter是Python的标准GUI库,可以用来创建各种图形用......
  • 从样板文件中导入样式到当前文档
    2023年11月24日QQ群友提出一个问题:SectionViewStyle的个别属性值无法获取,从而无法进行修改,开放的API中确实没有响应的枚举类型,从而无法使用SectionViewStyle.GetDisplayStylePlan()这个方法获取到DisplayStyle,于是我提出了采用导入样式的方法,提前准备好自己的样板文件,在样......
  • Eslint 的rules一些配置 (.eslintrc.js文件中的rules选项)
    rules:{//off=0,warn=1,error=2,如果是数组,第二项表示参数option//indent:[2,2],//控制缩进为2eqeqeq:1,//警告使用全等//quotes:[2,'single'],//单引号singleQuote:true,'no-console':0,//不禁用console'no-debugger......
  • 使用JavaWeb实现文件的上传和下载
    文件上传[文件上传的注意事项]1.为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下。2.为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名3.要限制上传文件的最大值。4.可以限制上传文件的类型,在收到上传文件名时,判断后缀名是否合......
  • 学习Linux用户管理与文件权限
    在Linux操作系统中,用户管理和文件权限是系统安全和管理的核心。本文将深入探讨Linux用户管理和文件权限的方方面面,帮助读者更好地理解和有效地运用这些关键概念。用户管理Linux用户管理是系统管理员不可或缺的一部分,它涉及到用户的创建、权限分配、密码管理以及安全性方面的考虑......
  • JavaScript ajax下载文件
     JavaScriptAjaxhttpget方法,利用a标签下载文件流。文件流:django返回文件流示例fromdjango.httpimportStreamingHttpResponseclassDownloadExportExcel(View):defget(self,request,*args,**kwargs):file_name=request.GET.get("filename")......