Web教程(10) 文件上传和下载

一、文件上传

1.导入jar包:commons-fileupload.jar,commons-io.jar

2.上传文件的页面 register.jsp

  • enctype=“multipart/form-data” 表示提交的数据种包含二进制数据,必填
  • <input type=“file” name=“myFile” /(>) 文件表单
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>	
	<form action="UploadServlet" method="post" enctype="multipart/form-data">
	           用户名:<input type="text" name="uname"/><br/>
	           密码:<input type="password" name="pass"/><br/>       
		上传头像:<input type="file" name="myFile" /><br/>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>

3. 上传Servlet UploadServlet.java

package org.lanqiao.servlet;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 * Servlet implementation class UploadServlet
 */
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	}

	/**
	 * 处理文件上传
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置字符集
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		//声明文件名
		String fileName="";
		//声明上传的路径
		String uploadPath=request.getServletContext().getRealPath("upload");
		System.out.println("要上传的路径是:"+uploadPath);
		//判断form表单请求提交的类型(encType)
		boolean isMultipart=ServletFileUpload.isMultipartContent(request);
		if(isMultipart) {			//如果是混合表单
			FileItemFactory factory=new DiskFileItemFactory();
			//使用工厂对象创建ServletUpload
			ServletFileUpload upload=new ServletFileUpload(factory);
			try {
				String name="";
				String pass="";
				//解析用户的表单
				List<FileItem> fileItems=upload.parseRequest(request);
				for (FileItem fileItem : fileItems) {
					boolean isField=fileItem.isFormField();		//判断是普通表单还是附件表单
					if(isField) {			//如果是普通表单
						String fieldName=fileItem.getFieldName();
						if("uname".equals(fieldName)) {
							name=fileItem.getString("utf-8");			//获取用户名
						}
						if("pass".equals(fieldName)) {
							pass=fileItem.getString("utf-8");
						}
					}else {			//如果是文件
						fileName=fileItem.getName();   //获取文件名
						System.out.println("获取到的文件名是:"+fileName);
						String newName=getNewName(fileName);			//生成新文件名
						File file=new File(uploadPath,newName);
						//文件写入
						fileItem.write(file);
						
					}
				}
				System.out.println("解析出来的用户名是:"+name);
				System.out.println("解析出来的密码是:"+pass);
			} catch (FileUploadException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	//生成一个新的文件名
	public String getNewName(String fileName) {
		return System.currentTimeMillis()+fileName;			//时间戳加上源文件名
	}
}

二、文件下载

1. 下载页面 download.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="downServlet?fileName=1562566700611dog.jpg">Java学习视频</a>
</body>
</html>

2. 下载 DownLoadServlet.java

  • resp.addHeader(“Content-Disposition”, “inline;filename=”+fileName); 设置下载文件名
  • resp.setContentType(“application/octet-stream”); 设置响应类型
package org.lanqiao.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DownLoadServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//接收用户传入的文件名
		String fileName=req.getParameter("fileName");
		//设置消息头
		resp.addHeader("Content-Disposition", "inline;filename="+fileName);
		//设置响应的类型
		resp.setContentType("application/octet-stream");
		//获取文件的路径
		String filePath=req.getSession().getServletContext().getRealPath("/upload");
		//获取输入流
		InputStream in=new FileInputStream(filePath+File.separator+fileName);
		//声明输出流对象
		OutputStream out=resp.getOutputStream();
		byte[] buffer=new byte[1024];
		int len=-1;
		while((len=in.read(buffer))!=-1){
			out.write(buffer,0,len);
		}
		out.close();
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
wysiwyg web builder是一款功能强大的网页建设工具,旨在方便非专业人士快速创建网页。下面是wysiwyg web builder的使用教程。 1. 下载和安装:首先,你需要前往wysiwyg web builder官方网站下载软件,并按照提示进行安装。 2. 创建新项目:打开软件后,在主界面上点击“新建”按钮,选择一个新的项目文件夹并为项目命名。 3. 添加元素:在主界面的左侧面板中,你可以找到各种不同的网页元素,如文本框、按钮、图像等。点击并拖动你想要添加的元素到页面上。 4. 设置元素属性:选择一个已添加的元素,右键点击并选择“属性”菜单。在属性面板中,你可以设置元素的大小、位置、颜色等各种属性。 5. 网页布局:通过拖动和调整元素,你可以自由设计网页的布局。你可以创建多个页面,通过点击屏幕底部的“页面”标签进行切换。 6. 添加交互功能:wysiwyg web builder还支持添加交互功能,如鼠标悬停效果、链接、图片幻灯片等。通过选择元素并进入其属性面板,你可以找到这些功能并进行设置。 7. 预览和发布:在创建和编辑网页的过程中,你可以随时点击工具栏上的“预览”按钮查看网页的最终效果。当你满意后,可以点击“发布”按钮将网页保存为HTML文件,并上传到服务器上。 8. 其他功能:wysiwyg web builder还有许多其他高级功能,如支持响应式设计、内置模板库、网页优化等。通过学习软件的帮助文档和在线教程,你可以进一步深入了解并利用这些功能。 总之,wysiwyg web builder是一款简单易用且功能强大的网页建设工具,可以帮助用户轻松创建漂亮和交互性的网页。通过上述的使用教程,你可以快速上手并开始使用wysiwyg web builder建立自己的网页。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值