当前位置:首页 > 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 中设置文件大小限制:

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));
    }
}

前端表单示例

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 处理,防止路径遍历攻击

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

文件如何上传至java

  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 项目目录结构及说明: 基础目录结构(基于 Vue CLI 生成) proje…

vue文件下载实现

vue文件下载实现

使用 Blob 对象下载文件 在 Vue 中可以通过创建 Blob 对象实现文件下载。通过将后端返回的二进制数据转换为 Blob,再生成下载链接触发浏览器下载行为。 axios.get('/api/…

php实现文件下载代码

php实现文件下载代码

实现文件下载的基本方法 使用PHP实现文件下载的核心是通过设置HTTP头部信息,强制浏览器触发下载行为而非直接显示文件内容。 $file_path = 'path/to/your/file.ext'…

vue实现文件分享

vue实现文件分享

Vue 实现文件分享功能 前端文件上传与展示 使用 Vue 和 Element UI 实现文件上传组件,允许用户选择文件并上传到服务器。 <template> <div>…

vue实现文件管理系统

vue实现文件管理系统

Vue 文件管理系统实现方案 核心功能模块设计 文件展示组件:使用树形结构展示目录层级,配合递归组件实现无限嵌套 上传下载功能:通过axios与后端API交互,支持拖拽上传和分片上传 权限控制系统:基…

vue实现文件导入导出

vue实现文件导入导出

Vue 文件导入 在 Vue 中实现文件导入通常通过 <input type="file"> 元素结合 FileReader API 完成。 <template> <…