`
zy116494718
  • 浏览: 477672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件上传与下载

    博客分类:
  • Java
 
阅读更多

文件下载:

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"));

 

 

分享到:
评论

相关推荐

    java web 文件上传与下载

    这个小例子为你提供了一种实现方式,帮助你理解如何在Java Web环境中处理文件的上传与下载。以下是对这些知识点的详细解释: 1. **Servlet API**: Java Web中的文件上传通常涉及到Servlet API,特别是`...

    JSP实现文件上传与下载.pdf

    "JSP实现文件上传与下载" JSP(Java Server Pages)是一种动态网页技术,用于开发基于Web的应用程序。JSP技术可以和其他Java技术集成,实现复杂的Web应用程序。下面是JSP实现文件上传与下载的知识点总结: 一、JSP...

    C#文件上传与下载

    C#文件上传与下载技术 C#文件上传与下载是winform应用程序中一个常见的功能,用于上传和下载文件。下面是关于C#文件上传与下载的技术知识点: 1. 文件上传 文件上传是指将客户端的文件上传到服务器端的过程。C#中...

    javaweb简单实现文件上传与下载源代码

    在JavaWeb开发中,文件上传和下载是常见的功能需求,特别是在构建交互性强的Web应用时。本源代码示例提供了一个简单的实现,帮助开发者理解如何处理这些操作。下面将详细解释涉及的技术点。 1. **文件上传** - **...

    PHP文件上传与下载学习笔记

    在PHP中,文件上传和下载是常见的Web应用功能,用于处理用户上传的文件或提供文件供用户下载。...总的来说,理解并熟练掌握PHP文件上传与下载的配置、错误处理和安全措施,对于开发健壮的Web应用程序是必不可少的。

    javaweb文件上传与下载模块源代码

    这个"javaweb文件上传与下载模块源代码"提供了一个实现这些功能的基础框架,对于初学者和Java程序员来说,这是一个很好的学习资源。下面将详细讲解其中涉及的关键知识点。 1. **Servlet和HTTP协议**: - 在Java ...

    文件上传与下载简单实例

    在IT领域,文件上传与下载是Web应用中的基础功能,广泛应用于各种场景,如社交媒体、云存储服务、在线教育平台等。本实例将探讨如何实现简单的...通过合理的设计与实现,可以构建稳定、高效且安全的文件上传下载系统。

    文件上传与下载servlet

    在IT行业中,文件上传与下载是Web应用中常见的功能,特别是在企业级系统中,例如文档管理系统、在线教育平台等。Servlet作为Java Web开发中的一个重要组件,常被用来处理这些操作。下面将详细介绍如何使用Servlet...

    java实现文件上传与下载

    在Java开发中,文件上传和下载是常见的功能需求,尤其在Web应用中,例如用户上传个人照片、下载文档等。Struts2是一个流行的Java Web框架,它提供了方便的文件上传和下载支持。以下是对这个主题的详细讲解。 一、...

    文件上传与下载项目报告

    - **项目背景**:随着互联网技术的发展,文件的在线处理和共享变得越来越普遍,因此构建一个稳定可靠的文件上传下载系统是必要的。 2. **可行性研究报告** - **概论**:在项目开始之前,需评估项目的可行性和预期...

    【ASP.NET编程知识】ASP.NET Core文件上传与下载实例(多种上传方式).docx

    ASP.NET Core 文件上传与下载实例(多种上传方式) 知识点1: ASP.NET Core 文件上传与下载实例 ASP.NET Core 2.0 已经很成熟,可以使用模型绑定上传文件。官方文档提供了相关的示例代码,可以作为参考。 知识点2:...

    文件上传与下载组件

    "文件上传与下载组件"是IT领域中一个关键的功能模块,尤其在Web应用程序中,它为用户提供了方便的数据交互方式。fileUpDo组件是专为此目的设计的,它集成了文件上传和下载的核心功能,使得开发者能够快速地在自己的...

    文件上传与下载项目源码

    文件上传与下载是Web应用程序中的常见功能,广泛应用于各种在线平台,如社交媒体、云存储服务、协同工作系统等。在本项目源码中,我们关注的是如何实现这一关键功能,以便于开发者能够快速地集成到自己的应用中。...

    文件上传与下载的功能模块

    在IT行业中,文件上传与下载是许多Web应用的基础功能,特别是在协作、分享和存储平台中。这个代码模块可能包含了实现这两个功能的关键组件。下面将详细解释文件上传与下载的基本概念,以及实现这些功能的一些关键...

    javaweb文件上传与下载

    javaweb文件上传与下载

    文件上传与下载模块

    在实现文件上传下载时,要考虑到权限控制。确保只有拥有相应权限的用户才能访问特定的文件,这可能涉及到用户认证和授权机制。 8. **错误处理** 编程时需要考虑可能出现的各种异常情况,如文件过大导致内存溢出、...

    文件的上传与下载过滤操作技术(java jsp )

    以上就是关于"文件的上传与下载过滤操作技术(java jsp )"的详细解析,涵盖了Java JSP实现文件上传下载、过滤器的使用以及登录验证的关键技术点。理解并掌握这些知识点,能帮助开发者构建安全、高效的Web应用。

    Java开发案例-springboot-10-整合MinIO实现文件上传与下载-源代码+文档.rar

    Java开发案例-springboot-10-整合MinIO实现文件上传与下载-源代码+文档.rar Java开发案例-springboot-10-整合MinIO实现文件上传与下载-源代码+文档.rar Java开发案例-springboot-10-整合MinIO实现文件上传与下载-源...

Global site tag (gtag.js) - Google Analytics