Java。文件上传。下载
文件上传:
- 创建一个HTML表单,包含一个文件选择器和一个提交按钮。
<form action="upload.jsp" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
- 在服务器端处理上传的文件。可以使用Apache Commons FileUpload库来处理文件上传。以下是一个示例代码:
// 创建一个文件上传处理器
ServletFileUpload upload = new ServletFileUpload();
// 解析上传请求
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext()) {
FileItemStream item = iter.next();
String name = item.getFieldName();
InputStream stream = item.openStream();
if (item.isFormField()) {
// 处理表单域
String value = Streams.asString(stream);
// ...
} else {
// 处理上传的文件
String filename = item.getName();
// ...
}
}
- 将上传的文件保存到服务器本地。可以使用Java IO库来保存文件。
// 创建一个文件输出流
FileOutputStream out = new FileOutputStream(new File("/path/to/file"));
// 将上传的文件写入输出流
byte[] buffer = new byte[1024];
int len;
while ((len = stream.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
// 关闭输出流
out.close();
文件下载:
- 在服务器端,创建一个Servlet来处理文件下载请求。
@WebServlet("/download")
public class DownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取要下载的文件名
String filename = request.getParameter("filename");
// 设置响应的内容类型
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
// 获取要下载的文件的输入流
InputStream in = getServletContext().getResourceAsStream("/path/to/file/" + filename);
// 获取响应的输出流
OutputStream out = response.getOutputStream();
// 将文件复制到输出流
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
// 关闭输入流和输出流
in.close();
out.close();
}
}
- 在客户端,使用一个链接或按钮来触发文件下载请求。
<a href="download?filename=myfile.txt">下载文件</a>
``
原文地址: https://www.cveoy.top/t/topic/fULF 著作权归作者所有。请勿转载和采集!