admin 管理员组

文章数量: 1087139


2024年4月18日发(作者:shell 循环for)

DiskFileItemFactory实现文件上传FileInputStream

下载

FileInputStream 是 Java 输入流的一种,用于从文件中读取数据。

它是字节流,适用于读取二进制文件。

1.文件上传

```java

import tException;

import artConfig;

import vlet;

import ;

import ption;

import ;

public class FileUploadServlet extends HttpServlet

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException,

IOException

boolean isMultipart =

ipartContent(request);

if (isMultipart)

FileItemFactory factory = new DiskFileItemFactory(;

ServletFileUpload upload = new ServletFileUpload(factory);

try

List items = equest(request);

for (FileItem item : items)

if (!Field() { // 如果是文件字段

String fileName = e(;

String filePath = "/path/to/save/uploads/" + fileName; //

保存文件的路径

File file = new File(filePath);

(file); // 将文件保存到指定路径

ter(.write("File uploaded successfully.");

}

}

} catch (Exception e)

ter(.write("File upload failed.");

}

}

}

```

上述代码中,首先判断请求是否为多部分内容(即文件上传)。然后

创建一个 DiskFileItemFactory 对象和一个 ServletFileUpload 对象。

通过调用 `equest(request)` 解析请求,得到一个包含上

传的文件字段的 FileItem 列表。遍历 FileItem 列表,如果是文件字段,

则获取文件名和保存路径,创建一个 File 对象,最后将文件保存到指定

路径。

```java

import ;

import putStream;

import ption;

import Stream;

import tException;

import vlet;

public class FileDownloadServlet extends HttpServlet

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException,

IOException

String fileName = "";

File file = new File(filePath);

if (()

tentType("application/octet-stream");

tentLength((int) ();

der("Content-Disposition", "attachment;

filename="" + fileName + """);

FileInputStream fis = new FileInputStream(file);

OutputStream os = putStream(;

byte[] buffer = new byte[4096];

int bytesRead;

while ((bytesRead = (buffer)) != -1)

(buffer, 0, bytesRead);

}

(;

(;

} else

ter(.write("File not found.");

}

}

```


本文标签: 文件 保存 路径 请求