21xrx.com
2024-12-22 23:37:42 Sunday
登录
文章检索 我的文章 写文章
我最近在学习JavaWeb
2023-06-11 03:00:06 深夜i     --     --
JavaWeb 文件上传 代码例子

我最近在学习JavaWeb,发现实现文件上传功能非常有用,所以我想和大家分享一些关于JavaWeb实现文件上传的内容。

首先,我们需要在JSP页面上创建一个HTML表单来接受用户上传的文件。以下是一个简单的HTML表单:


  

  

其中,`action`属性用于指定表单的提交目标,`method`属性用于指定表单提交的方式,`enctype`属性用于指定表单数据的编码类型。

接下来,我们需要处理文件上传请求。我们可以通过编写一个Servlet来处理上传请求。以下是一个实现文件上传的Servlet代码:


@WebServlet("/fileUpload")

@MultipartConfig

public class FileUploadServlet extends HttpServlet {

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    Part filePart = request.getPart("file");

    String fileName = getFileName(filePart);

    InputStream fileContent = filePart.getInputStream();

    // 处理文件上传逻辑

  }

  private String getFileName(Part filePart) {

    String contentDisposition = filePart.getHeader("content-disposition");

    String[] items = contentDisposition.split(";");

    for (String item : items) {

      if (item.trim().startsWith("filename")) {

        return item.substring(item.indexOf("=") + 2, item.length() - 1);

      }

    }

    return "";

  }

}

在上面的代码中,`@WebServlet`注解用于指定Servlet的URL映射,`@MultipartConfig`注解用于指定Servlet可以处理文件上传请求。在Servlet的`doPost`方法中,我们首先通过`request.getPart("file")`方法获取用户上传的文件的`Part`对象,然后通过`getFileName`方法获取文件名,最后通过`Part.getInputStream()`方法获取文件内容的输入流。我们可以在`// 处理文件上传逻辑`的位置实现我们的文件上传逻辑。

最后,我们需要将文件保存到服务器上的某个目录中。以下是一个保存文件的代码例子:


private void saveFile(InputStream fileContent, String fileName) throws IOException {

  String filePath = "D:/uploads/" + fileName;

  OutputStream out = null;

  int read = 0;

  final byte[] bytes = new byte[1024];

  out = new FileOutputStream(new File(filePath));

  while ((read = fileContent.read(bytes)) != -1) {

    out.write(bytes, 0, read);

  }

  out.flush();

  out.close();

}

在上面的代码中,我们通过`FileOutputStream`类创建一个输出流,并通过`bytes`数组读取文件内容的字节数据,然后将字节数据写入输出流中。最后,我们需要调用`flush`方法将缓存的字节数据写入到文件中,并调用`close`方法关闭输出流。

综上所述,我们可以通过上述的代码实现JavaWeb文件上传的功能。相信这篇文章对正在学习JavaWeb的同学有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复