当前位置:首页 > Java

文件如何上传至java

2026-03-18 19:59:48Java

文件上传至 Java 后端的方法

使用 Spring Boot 的 MultipartFile

Spring Boot 提供了 MultipartFile 接口处理文件上传。在后端控制器中,通过 @RequestParam@ModelAttribute 接收文件。

@PostMapping("/upload")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
    if (file.isEmpty()) {
        return ResponseEntity.badRequest().body("文件为空");
    }
    try {
        String fileName = file.getOriginalFilename();
        Path path = Paths.get("上传目录路径/" + fileName);
        Files.write(path, file.getBytes());
        return ResponseEntity.ok("文件上传成功");
    } catch (IOException e) {
        return ResponseEntity.internalServerError().body("上传失败");
    }
}

配置上传限制

application.properties 中设置文件大小限制:

文件如何上传至java

spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

使用 Commons FileUpload(传统 Servlet)

对于非 Spring 项目,可以通过 Apache Commons FileUpload 实现:

ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
    if (!item.isFormField()) {
        String fileName = new File(item.getName()).getName();
        item.write(new File("上传目录路径/" + fileName));
    }
}

前端表单示例

文件如何上传至java

HTML 表单需设置 enctype="multipart/form-data"

<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <button type="submit">上传</button>
</form>

安全性注意事项

  • 验证文件类型(通过扩展名或文件头)
  • 限制上传目录的访问权限
  • 对文件名进行 sanitize 处理,防止路径遍历攻击

大文件分块上传 对于大文件,可采用分块上传策略:

  1. 前端将文件分块并逐一上传
  2. 后端接收分块并临时存储
  3. 全部分块上传完成后合并文件
// 分块合并示例
File mergedFile = new File("最终文件路径");
try (FileOutputStream fos = new FileOutputStream(mergedFile, true)) {
    for (File chunk : chunks) {
        Files.copy(chunk.toPath(), fos);
    }
}

标签: 传至文件
分享给朋友:

相关文章

vue实现文件模板展示

vue实现文件模板展示

Vue 实现文件模板展示的方法 在 Vue 中实现文件模板展示通常涉及文件上传、预览和模板渲染等功能。以下是几种常见的实现方式。 使用文件上传组件 通过 Vue 的文件上传组件(如 el-uploa…

vue实现文件进度

vue实现文件进度

Vue 实现文件上传进度 使用 Vue 实现文件上传进度可以通过结合 axios 或原生 XMLHttpRequest 的进度事件来实现。以下是两种常见方法: 使用 axios 上传文件并显示进度…

vue前端实现文件下载

vue前端实现文件下载

使用 window.open 直接下载 通过 window.open 直接打开文件链接触发下载,适用于简单的文件下载场景。 将文件 URL 作为参数传入,浏览器会自动处理下载行为: window.o…

vue实现文件电子签名

vue实现文件电子签名

实现文件电子签名的基本步骤 安装依赖库 需要使用signature_pad库实现手写签名功能,通过npm或yarn安装: npm install signature_pad # 或 yarn add…

js代码实现vue文件

js代码实现vue文件

使用 JavaScript 解析和生成 Vue 文件 Vue 文件(.vue)通常包含模板、脚本和样式三部分。以下是使用 JavaScript 解析和生成 Vue 文件的方法。 解析 Vue 文件…

如何启动react文件

如何启动react文件

启动 React 项目的步骤 确保已安装 Node.js 和 npm 在启动 React 项目之前,需确保系统已安装 Node.js(包含 npm)。可以通过以下命令检查是否安装成功: node -…