天天看点

JavaWeb文件的上传和下载使用smartupload.jar实现文件上传文件下载

文件的上传和下载

  • 使用smartupload.jar实现文件上传
    • 1.将jar包添加到项目中:smartupload.jar
    • 2.准备上传的页面
    • 3.开始获取数据,保存文件
      • getPageContext
    • smartupload常用方法
  • 文件下载

使用smartupload.jar实现文件上传

1.将jar包添加到项目中:smartupload.jar

2.准备上传的页面

<form action="toUpload" method="post" enctype="multipart/form-data" > 
	书名:<input type="text" name="bookName"/><br> 
	图片:<input type="file" name="自定义名称"/><br> 
	<input type="submit" value="提交"/> 
</form>
           

注意:

(1)form标签中要添加enctype属性

(2)提交方式必须是post

3.开始获取数据,保存文件

实例代码:

public void upload(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
	try {
		//上传文件 
		SmartUpload su=new SmartUpload(); 
		//获得pageContext对象 
		JspFactory factory=JspFactory.getDefaultFactory(); 
		PageContext pagecontext= factory.getPageContext(this, request,response, null,false,1024,true); 
		su.initialize(pagecontext); 
		su.setCharset("utf-8"); 
		//实现文件数据的上传 
		su.upload(); 
		File file = su.getFiles().getFile(0); 
		//得到文件的基本信息 
		String filename=file.getFileName(); 
		String type=file.getContentType(); 
		System.out.println("type="+type); 
		String url="uploadfile/"+filename; 
		//将上传文件保存到指定目录 
		file.saveAs(url, SmartUpload.SAVE_VIRTUAL); 
		request.setAttribute("filename",filename); 
		String uname=su.getRequest().getParameter("uname"); 
		System.out.println("uname="+uname); 
		request.getRequestDispatcher("success.jsp").forward(request, response);
	} catch (SmartUploadException e) { 
		// TODO Auto-generated catch block 
		e.printStackTrace();
	} 
}
           

注意:

(1)此时如果表单中有其他数据时,不能通过request直接获取,需要通过SmartUpload对象获取

比如下面的表单中不光有图片还有文本:

JavaWeb文件的上传和下载使用smartupload.jar实现文件上传文件下载

则此时如果是用于上传文件的form就需要通过下述代码来获得文本的值:

JavaWeb文件的上传和下载使用smartupload.jar实现文件上传文件下载

并且该代码要在SmartUpload操作完成后添加

注意2:

这里的上传文件的目录是自己创建并指定的,比如我创建了如下目录:

JavaWeb文件的上传和下载使用smartupload.jar实现文件上传文件下载

要先在当中创建一个默认的文件,否则空的目录是无法部署到服务器里的。

然后我们的地址就应当这样设置:

JavaWeb文件的上传和下载使用smartupload.jar实现文件上传文件下载

地址索引的根目录是web目录,采用相对路径

(2)解决乱码:

(3)注意斜杠方向:/

getPageContext

JavaWeb文件的上传和下载使用smartupload.jar实现文件上传文件下载
JavaWeb文件的上传和下载使用smartupload.jar实现文件上传文件下载

smartupload常用方法

JavaWeb文件的上传和下载使用smartupload.jar实现文件上传文件下载

文件下载

String name=request.getParameter("filename"); 
String url="uploadfile/"+name; 
//将响应的内容设置为通用的二进制流 
response.setContentType("application/octet-stream"); 
//attachment 告诉浏览器以附件的方式下载文件(弹出下载框) 
name=URLEncoder.encode(name,"utf-8"); //设置编码防止文件名乱码
response.addHeader("Content-Disposition","attachment;filename="+name); 
request.getRequestDispatcher(url).forward(request, response); 
//清空缓冲区:将服务端缓冲区的文件内容,立即权并不传送给客户端 
response.flushBuffer();
           

注意:页面跳转时的地址是文件的地址