天天看点

response.sendRedirect("")与文件上传下载

最近为客户远程更新系统时由于网速很慢,在处理一些客户从后台上传到项目中的文件(在前台需要显示,主要为图片和视频)时特别费时,所以想到把文件放到硬盘上指定的文件夹下(如:E:\upload),然后再服务器启动的时候同时部署这个文件夹,这样我们在后台上传文件时只需要指定文件名称(如:测试图片.png),然后在action中做一些处理即可,具体看下面:

服务器(Tomcat)启动时同时部署文件夹,在tomcat/conf/server.xml文件中的<Host></Host>标签之间添加如下,

<Context  path="/images"  docBase="E:\upload" debug="0" reloadable="true"/>
           

后台action处理代码,

response.setContentType("text/html;charset=utf-8"); 
			response.sendRedirect("/images/" + URLEncoder.encode(fileName, "utf-8"));  // fileName为E:\upload下的文件名称,"/images/"为访问路径
           

为了避免在访问不到以中文命名的文件,修改Tomcat的编码格式也为"utf-8",

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="utf-8"/>
           

同时补充添加Tomcat中tomcat/conf/web.xml下<mime-mapping>,这样是为了在访问文件时以指定格式下载或打开(web.xml下<mime-mapping>的已经默认添加了很多文件mime类型),我在此补充添加了,

<mime-mapping>
	    <extension>docx</extension>
	    <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>
	</mime-mapping>
	
	<mime-mapping>
	    <extension>pptx</extension>
	    <mime-type>application/vnd.openxmlformats-officedocument.presentationml.presentation</mime-type>
	</mime-mapping>
	
	<mime-mapping>
	    <extension>xlsx</extension>
	    <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
	</mime-mapping>
           

这样就可以在后台添加文件时直接指定上传文件的名称即可,然后直接把相应文件复制到上传的文件夹,这中间看似没什么,但却使我们在部署项目之前省去了从后台上传文件到项目文件夹,然后还需要把这个文件夹也上传到远程服务器,这样较少了远程部署项目时费时费力的情况。