文件下载:
jsp:
<input type="button" value="歌曲下载" onclick="location.href='downFile.do'">
java:
public class downFile implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { download("C:\\Users\\ankreran\\Videos\\1.txt",response); return null; } public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名。 String filename = file.getName(); // 取得文件的后缀名。 String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase(); // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(path)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); // 设置response的Header response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes())); response.addHeader("Content-Length", "" + file.length()); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (IOException ex) { ex.printStackTrace(); } return response; } }
其中response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
例如web浏览器就是通过MIME类型来判断文件是GIF图片。Tomcat的安装目录\conf\web.xml 中就定义了大量MIME类型 ,可以参考。
response.setContentType("text/html; charset=utf-8"); html
.setContentType("text/plain; charset=utf-8"); 文本
text/javascript json数据
application/xml xml数据
常用的MIME类型还有image/gif(GIF图片)、image/bitmap(BMP图象)、text/plain(文本文档TXT)、text/vnd.wap.wml(手机WAP页面)等
response.setContentType("application/octet-stream"); 把响应设置为二进制流,任何类型的都可以设置成这个MIME型。
做用表单上传文件,想在服务端验证上传文件的类型,只允许上传GIF,JPG,ZIP, 我们有两种方法:
第一:检查文件的扩展名;
第二:检查文件的MIME类型 。检查文件的扩展名的方法,很简单快捷, 但是 a.jsp 改名为 a.jpg能可以绕过检查上传了。 检查文件的MIME类型的方法,在IE7与Firefox下有一点区别(见下表), 有不同浏览器上传表现不一致。
文件上传:(图片存本地,抽图并上传到云存储上)
实例:GroupController.java
@RequestMapping(value="/uploadImage.do") //图片落本地,抽图,上传到云存储 public @ResponseBody String uploadImage(HttpServletRequest request, HttpServletResponse response){ Map<String, Object> model = new HashMap<String, Object>(); try { MultipartHttpServletRequest mpr = (MultipartHttpServletRequest) request; MultipartFile mpf = mpr.getFile(MULTIPARTFILE_NAME); // 文件input标签的name值 //这里使用request.getInputStrtam()是不可以的 if (mpf.getSize() > maxFileSize) { //文件是否超出大小 return ReturnMessageUtil.createErrorMsg("上传图片失败,图片大小不能超过2M!"); } String fileName = mpf.getOriginalFilename();//文件名,包括扩展名 String originalFileType = PhotoUtil.getExtension(fileName); //获取上传文件类型 // 得到一个可用的文件名,并设置各个尺寸缩略图的存储文件名 String mainStoreFile = photoCloudStorage.getNextFileName(); //设置文件名 String fileNameO = photoCloudStorage.getTempPath() + mainStoreFile + "_O" + originalFileType; //如b5be1cbe30b34c5e9fa56107d396a7ef_O.jpg String fileNameB = photoCloudStorage.getTempPath() + mainStoreFile + "_B" + originalFileType; String fileNameM = photoCloudStorage.getTempPath() + mainStoreFile + "_M" + originalFileType; String fileNameS = photoCloudStorage.getTempPath() + mainStoreFile + "_S" + originalFileType; //先上传到本地,产生临时文件 File fileOriginalImage = new File(fileNameO); mpf.transferTo(fileOriginalImage); //开始抽图,会读取抽图软件执行命令,这里会生成3张图 imageConvertor.fill(fileNameO, fileNameB, imageSizeBig); imageConvertor.fill(fileNameO, fileNameM, imageSizeMiddle); imageConvertor.fill(fileNameO, fileNameS, imageSizeSmall); //上传到云存储 String storeFileO = photoCloudStorage.upload(fileNameO); String storeFileB = photoCloudStorage.upload(fileNameB); String storeFileM = photoCloudStorage.upload(fileNameM); String storeFileS = photoCloudStorage.upload(fileNameS); model.put("storeFileO", storeFileO); model.put("storeFileB", storeFileB); model.put("storeFileM", storeFileM); model.put("storeFileS", storeFileS); JSONObject json = JSONObject.fromObject(model); //上传完后,删除服务器临时文件 File file = new File(fileNameO); if(file.exists()){ file.delete(); } file = new File(fileNameB); if(file.exists()){ file.delete(); } file = new File(fileNameM); if(file.exists()){ file.delete(); } file = new File(fileNameS); if(file.exists()){ file.delete(); } file = new File(fileNameO); if(file.exists()){ file.delete(); } return ReturnMessageUtil.createOKMsg(json); } catch (Exception e) { e.printStackTrace(); return ReturnMessageUtil.createErrorMsg("上传图片失败!"); } }
ps: 如果想获得上传图片的高度和宽度,可以用如下方法:
File picture = new File("C:/Users/Administrator/Pictures/我的图片/neusoft.png"); BufferedImage sourceImg =ImageIO.read(new FileInputStream(picture)); System.out.println(String.format("%.1f",picture.length()/1024.0)); System.out.println(sourceImg.getWidth()); System.out.println(sourceImg.getHeight());
jsp端:
<form action="group/uploadImage.do" method="post" id="wsn" name="wsn" enctype="multipart/form-data"> <input name="mpf" type="file" value=""/> <input type="submit" value="提交"> </form>
ps:如果想要用户只能下载不能打开文件的话,可以设置以下三行代码:
response.setHeader("content-disposition", "attachment;filename=" + stroeFile); // 设置response的编码方式 response.setContentType("application/x-msdownload"); // 解决中文乱码 response.setHeader("Content-Disposition", "attachment;filename="+ new String(stroeFile.getBytes("UTF-8"), "iso-8859-1"));
相关推荐
虽然文章中没有详细说明文件下载的代码示例,但基本思路与上传类似。首先建立连接和登录,然后使用`ftp_get()`函数将远程服务器上的文件下载到本地。这个函数同样需要连接对象、远程文件名、本地文件名和传输类型...
在Node.js中使用Multer实现文件上传与下载的步骤和相关知识点主要包括以下几个方面: 1. 文件上传的基础知识: - 使用HTML表单上传文件时,必须设置表单的enctype属性为multipart/form-data。 - 在Node.js服务器...
在JavaWeb开发中,文件上传和下载是常见的功能需求,特别是在构建交互性强的Web应用时。本源代码示例提供了一个简单的实现,帮助开发者理解如何处理这些操作。下面将详细解释涉及的技术点。 1. **文件上传** - **...
文件上传通常用于图片上传、文档共享等场景,而文件下载则满足了用户下载应用程序、文件资源等需求。下面将分别介绍文件上传与下载的相关知识点。 ### 文件上传知识点 在本示例代码中,我们首先了解到使用的是...
最近在做项目中需要给前端提供文件下载链接,所以借着机会搭建了基于Nginx的文件服务器,特此记录便于日后查阅。 1、配置文件 需要修改 nginx.conf 配置文件(内网地址:10.12.1.215、外网地址:113.98.58.42),...
"C#文件上传与下载的实现方法" 本文主要介绍了C#语言中文件上传和下载的实现方法,旨在为开发者提供一个实用的参考指南。下面是对标题、描述、标签和部分内容中所涉及的知识点的详细解读。 C#文件上传 在C#中,...
这个小例子为你提供了一种实现方式,帮助你理解如何在Java Web环境中处理文件的上传与下载。以下是对这些知识点的详细解释: 1. **Servlet API**: Java Web中的文件上传通常涉及到Servlet API,特别是`...
在SpringMVC框架中,文件上传与下载是常见的功能需求,尤其在开发Web应用时,用户可能需要上传图片、文档等文件,或者从服务器下载资源。本教程将深入讲解SpringMVC如何处理文件上传和下载操作,并通过源码分析来...
在JavaEE开发中,实现前后台交互的文件上传与下载是常见的功能需求。本文将详细讲解如何利用JavaEE技术来完成这一任务。 一、文件上传 文件上传通常涉及到HTTP请求的POST方法,因为GET方法无法处理大容量的数据。...
Apache 文件上传与文件下载是Web开发中的常见功能,涉及到服务器端处理客户端发送的文件数据以及提供文件给用户下载。本案例将详细讲解如何在Apache环境下实现文件上传和下载。 首先,我们来看`web.xml`的配置部分...
特别是在使用Python3进行文件上传与下载方面,requests库提供了一种简单而直接的方法。本文将详细介绍使用Python3的requests库进行文件上传与下载的具体实现方法,并通过实例代码展示其详细的操作步骤,希望能够帮助...
在IT行业中,文件上传与下载是Web应用中常见的功能,特别是在企业级系统中,例如文档管理系统、在线教育平台等。Servlet作为Java Web开发中的一个重要组件,常被用来处理这些操作。下面将详细介绍如何使用Servlet...
本文实例为大家分享了Django文件上传与下载的具体代码,供大家参考,具体内容如下 文件上传 1.新建django项目,创建应用stu: python manage.py startapp stu 2.在配置文件setting.py INSTALLED_APP 中添加新创建的...
文章目录文件上传commons-fileupload组件基于表单的文件上传MultipartFile接口文件下载文件下载的实现方法文件下载的过程 文件上传 Spring MVC 框架的文件上传是基于 commons-fileupload 组件的文件上传,只不过 ...
"JSP实现文件上传与下载" JSP(Java Server Pages)是一种动态网页技术,用于开发基于Web的应用程序。JSP技术可以和其他Java技术集成,实现复杂的Web应用程序。下面是JSP实现文件上传与下载的知识点总结: 一、JSP...
最近学习了 C#实现文件上传与下载,现在分享给大家。 1、C#文件上传 创建MyUpload.htm页面,用于测试 <form name=form1 method=post action=UploadFile.aspx id=form1 enctype=multipart/form-data> <...
在Java企业级开发(JEE)中,文件上传与下载是一项常见的功能,广泛应用于各种Web应用,如在线文档管理系统、图片分享平台等。本项目旨在提供一个基础的文件上传和下载实现,允许用户通过浏览器上传文件,并能从...
- **项目背景**:随着互联网技术的发展,文件的在线处理和共享变得越来越普遍,因此构建一个稳定可靠的文件上传下载系统是必要的。 2. **可行性研究报告** - **概论**:在项目开始之前,需评估项目的可行性和预期...