You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Java集成Google Drive上传文件项目中Postman相关错误?

问题背景

本项目实现功能为:将文件上传至Google Drive后拿到云存储生成的文件唯一ID,将文件ID、对应用户ID、文件名存入数据库,支持按用户ID查询上传文件列表。现调用Postman触发上传接口时报错,修复方案如下:

修复步骤
  • 1. 修复JPQL查询语法错误
    FileRepository中的自定义查询错误使用了数据库表名,JPQL需要基于实体类名查询,修改如下:
// 原错误代码
@Query("select file from file_details file where file.user_id = ?1")
// 修改后代码
@Query("select file from FileEntity file where file.user_id = :userId")
List<FileEntity> findByUserId(String userId);
  • 2. 修正主键生成逻辑
    你需要将Google Drive返回的fileId作为实体主键,不需要JPA自动生成主键,修改FileEntity的主键注解:
// 原错误代码
@Id
@GeneratedValue
private String file_id;
// 修改后代码
@Id
private String file_id;
  • 3. 修正数据存储逻辑错误
    createOrUpdateFile方法未给新实体赋值必填字段就直接保存,会导致数据库存空值,修改逻辑如下:
public FileEntity createOrUpdateFile(FileEntity fileEntity, String fileId, String user_id) {
    // 先赋值必填字段
    fileEntity.setFile_id(fileId);
    fileEntity.setUser_id(user_id);
    // 文件名优先用上传文件的原名,也支持自定义传入
    if (fileEntity.getFile_name() == null) {
        fileEntity.setFile_name("未命名文件");
    }
    
    Optional<FileEntity> existFile = fileRepository.findById(fileId);
    if(existFile.isPresent()) {
        FileEntity newEntity = existFile.get();
        newEntity.setUser_id(user_id);
        newEntity.setFile_name(fileEntity.getFile_name());
        return fileRepository.save(newEntity);
    } else {
        return fileRepository.save(fileEntity);
    }
}
  • 4. 补全控制器参数绑定注解
    上传接口的实体参数需要添加@ModelAttribute注解才能正常绑定表单参数,同时增加上传失败的异常处理:
@PostMapping(value = "/upload/{user_id}")
public ResponseEntity<FileEntity> uploadFIle(@ModelAttribute FileEntity fileEntity,
                                              @RequestParam("file") MultipartFile file,
                                              @PathVariable String user_id){
    String fileId = fileManager.uploadFile(file);
    // 处理Google Drive上传失败的情况
    if (fileId == null) {
        return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
    }
    FileEntity updated = fileManager.createOrUpdateFile(fileEntity,fileId,user_id);
    return new ResponseEntity<>(updated, HttpStatus.OK);
}
  • 5. Postman请求配置说明
    按以下配置调用接口即可正常运行:
  1. 请求类型选择POST,请求地址格式为http://你的服务部署地址/upload/实际用户ID,替换路径中的实际用户ID为要绑定的用户标识
  2. 切换到Body选项卡,勾选form-data
  3. 新增参数,key填file,类型下拉选择File,Value选择本地要上传的文件
  4. 如果需要自定义文件名,可新增key为file_name的参数,Value填写自定义文件名

内容的提问来源于stack exchange,提问作者Linet M Shaji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:45:01