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

配置Google Gemini 1.5 Pro分析上传文件时遇400错误求助

解决Gemini 1.5 Pro文件URI无效的问题

错误原因

Gemini 1.5 Pro的fileUri参数不支持普通HTTPS外链(比如维基百科、Cloudinary的公开URL),仅接受两种格式:

  • Google Cloud Storage (GCS) 路径,格式为gs://bucket-name/file-path
  • 基于Base64编码的文件二进制数据(通过inlineData参数传递)

解决方案

方法1:使用GCS存储文件(生产环境推荐)

  1. 将用户上传的文件转存至GCS,或直接配置上传流程到GCS
  2. 给Gemini的服务账号generativelanguage@googleapis.com分配GCS桶的storage.objects.get权限
  3. 在请求中使用gs://格式的URI替换HTTPS链接:
    userContentParts.push({
        fileData: {
            mimeType: testFileType,
            fileUri: "gs://your-bucket-name/your-file-path.png"
        },
    });
    

方法2:使用Base64编码传递文件(测试/小文件场景)

直接下载文件并转换为Base64,通过inlineData参数传递:

  1. 新增文件转Base64的工具函数:
    import axios from 'axios';
    
    async function getFileAsBase64(url: string): Promise<string> {
      const response = await axios.get(url, { responseType: 'arraybuffer' });
      return Buffer.from(response.data).toString('base64');
    }
    
  2. 修改文件处理逻辑:
    if (fileUrl && fileType && uploadedFile) {
        const testFileUrl = "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png";
        const testFileType = "image/png";
        
        if (fileType.startsWith("image/") || fileType.includes("pdf")) {
            // 获取Base64编码数据
            const base64Data = await getFileAsBase64(testFileUrl);
            
            userContentParts.push({
                inlineData: { // 替换原fileData为inlineData
                    mimeType: testFileType,
                    data: base64Data
                },
            });
    
            // 后续messageType、displayRequest逻辑保持不变
        }
    }
    

额外注意事项

  • 文件大小限制:图片最大10MB,PDF最大1GB,超过限制会触发错误
  • 确保使用最新版的@google/generative-ai SDK,避免版本兼容问题
  • 若使用GCS,确认桶和文件路径无拼写错误,且权限配置生效

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:52:40