栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb如何实现本地文件上传功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb如何实现本地文件上传功能

这篇文章主要介绍了JavaWeb如何实现本地文件上传功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Web中的文件上传主要是分为两步

在Web页面中设置一个上传文件的选项,一般是通过

第三步:创建一个Servlet类,对上传的文件进行处理

package cn.itcast.fileupload;

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.List;
import java.util.UUID;

public class UploadServlet extends HttpServlet {

  private static final long serialVersionUID = 1L;

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    try {
//      设置ContentType字段
      resp.setContentType("text/html;charset=utf8");
//     创建DiskFileItemFactory工厂对象,可以将请求消息实体中的每一个文件封装成单独的FielItem对象
      DiskFileItemFactory factory = new DiskFileItemFactory();

//     设置文件缓存目录,如果该文件不存在则新创建一个
      File f = new File("/Users/liuliu/Desktop/my");
      if (!f.exists()) {
 f.mkdir();
      }

//      设置文件的缓存路径
      factory.setRepository(f);
//      创建一个ServletFileUpload对象
      ServletFileUpload fileUpload = new ServletFileUpload(factory);
//      设置字符编码
      fileUpload.setHeaderEncoding("utf-8");

//      解析request,得到上传文件的FileItem对象
      List fileItems = fileUpload.parseRequest(req);
//      获取字符流
      PrintWriter writer = resp.getWriter();

//      遍历对象fileItems对象的List集合
      for (FileItem fileItem : fileItems) {
// 判断当前的FileItem对象封装的数据是"普通文本表单字段"
 if (fileItem.isFormField()) {
//   获得上传的表单字段的name属性值
   String name = fileItem.getFieldName();
   if (name.equals("name")) {
//     如果FileItem对象中保存的数据流不为空,则返回一个字符串,并通过print输出
     if (!fileItem.getString().equals("")) {
String value = fileItem.getString("utf-8");
writer.print("上传者:" + value + "
"); } } } else {//判断当前的FileItem对象封装的数据是"文件表单字段" // 获得上传文件的文件名 String filename = fileItem.getName(); if (fileItem != null && !fileItem.equals("")) { writer.print("上传的文件名称是" + filename + "
"); // 截取出文件名 filename = filename.substring(filename.lastIndexOf("\") + 1); // 给定文件名一个唯一的id filename = UUID.randomUUID().toString() + "_" + filename; // 在服务器中创建同名文件 String webPath = "/myima/"; // 将服务器中文件夹路径与文件名组合成完整的服务器端路径 String filePath = getServletContext().getRealPath(webPath + filename); // 创建文件 File file = new File(filePath); file.getParentFile().mkdir(); file.createNewFile(); // 获得上传文件流 InputStream in = fileItem.getInputStream(); // 打开服务器端的上传文件 FileOutputStream fileOutputStream = new FileOutputStream(file); // 流的对拷 byte buffer[] = new byte[1024]; int len; while ((len = in.read(buffer)) > 0) { fileOutputStream.write(buffer, 0, len); in.close(); fileOutputStream.close(); fileItem.delete(); writer.print("上传文件成功"); } } } } } catch (FileUploadException e) { e.printStackTrace(); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }


上传几个文件测试了下,可以看到myima文件成功创建了,文件也成功上传到这里了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/135306.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号