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
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.");
}
}
```
版权声明:本文标题:DiskFileItemFactory实现文件上传FileInputStream下载 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713371325a631332.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论