java上传功能_文件上传功能实现(一)

文件上传:

①上传前的准备工作(准备一个注册的表单页面)

创建一个文件上传的控件,点击这个控件就可以选择需要上传的文件了

注意:上传时表单的上传类型必须是:multipart/form-data

上传的method必需是POST

当设置了multipart/form-data的时候,就不会对字符进行编码了,而Servlet中拿到的值与数据必需是经过

编码的值,所以要解决这个问题,就需要对上传的东西进行字符编码.

②准备一个上传的Servlet,到后台接收传过来的普通表单数据 与 文件(二进制)

③导入相应的FileUpload jar包 (commons-fileupload-1.2.2.jar ,commons-io-1.4.jar)

这两个包的作用,前者可以让我们通过教程学会文件的上传功能实现,后面的这个包里面的

FilenameUtils 里面得工具可以帮我们完善这个文件上传的功能修复BUG

④使用jar包

打开jar包找到index.html

小提示:在首页总有一个开发指南(User Guide)或者快速上手(Quick Start )等着你

⑤根据快速入门解析完成一个文件上传的功能

代码:

@WebServlet("/upload")

public class UploadServlet extends HttpServlet {

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//创建一个工厂解析这个请求,得到的是一个集合,这个集合装的就是一个请求对象,封装的就是每一条请求数据

try {

// 创建一个工厂

FileItemFactory factory = new DiskFileItemFactory();

// 创建一个文件上传的处理器

ServletFileUpload upload = new ServletFileUpload(factory);

//解析这个请求:解析完之后咱们可以拿到一个FileItem的集合

List < FileItem > items = upload.parseRequest(req);

//通过遍历集合可以拿到上传的文件的属性值,包括属性名,值..

for (FileItem fileItem : items) {

//上面的测试可以看输出,普通控件和file控件的处理方式是要区别对待的

if(fileItem.isFormField()){

//代表是一般表单,用一般表单的处理方式解决即可

}else{

//拿到上传文件的名称(有ie版本问题)

//String upname=fileItem.getName();

//有重名文件上传的问题

String upname = FilenameUtils.getName(fileItem.getName());

//有保存路路径的问题有的操作系统没有盘符

File uploadFile = new File("D:/",upname);

//将本地的文件写到服务器中

fileItem.write(uploadFile);

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

说明:这个只能实现本地上传,还有许多bug需要修复,在后面会有详细的解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值