无法将带有特殊字符的文件名上传到Google Drive REST

2024-06-24

当我尝试使用 Web 应用程序将文件上传到 google Drive api 时,出现错误,并且该文件包含带重音的字符,例如“ç”。

我使用两个请求上传文件,一个初始请求包含文件信息并将 uri 返回到文件应上传的位置,后续请求包含文件本身。

第一次请求时出现错误(带有文件信息的那个)。

返回的错误只是一个“400 - bad request”,我不知道如何上传带有这种字符的文件。

以下是当我尝试上传 gif 图像文件时我的应用程序生成的请求示例。

Content-Type: application/json; charset=UTF-8
X-Upload-Content-Length: 257
Authorization: Bearer ******
X-Upload-Content-Type: image/gif
Host: www.googleapis.com
Content-Length: 126
Expect: 100-continue

请求正文仅包含一个带有文件数据的 json 对象,以下是配置此初始请求的代码示例:

private WebRequest CreateInitialUploadRequest(String parentId, String title, String mimeType)
{
    String uri = "https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable&access_token=" + AUTH_KEY;

    System.Net.WebRequest request = this.WebRequestFactory.CreateWebRequest(uri);

    request.Method = "POST";
    request.ContentType = "application/json; charset=UTF-8";            
    request.Headers.Add("X-Upload-Content-Length", length.ToString());
    request.Headers.Add("Authorization", string.Format("Bearer {0}", AUTH_KEY));
    request.Headers.Add("X-Upload-Content-Type", mimeType);

    //Setup parent id folder for file
    object[] parents = {new {id = parentId}};        

    object jsonObject = new
    {
        title = title,
        mimeType = mimeType,
        description = "foo bar",
        parents = parents
    };

    String strData = new JavaScriptSerializer().Serialize(jsonObject);

    byte[] data = Encoding.UTF8.GetBytes(strData);

    request.ContentLength = data.Length;

    var stream = request.GetRequestStream();
    stream.Write(data, 0, data.Length);
    stream.Close();

    return request;
}

当我尝试像这样调用该方法时:

WebRequest initialRequest = CreateInitialUploadRequest("valid-parent-folder", "invalid file ç", "image/gif");

//I get an 'bad request' http error code 400 in the following line:
initialRequest.GetResponse();

我应该以某种方式对请求进行编码吗?


根据peleyal的评论我解决了我的问题。我仍在使用其余调用而不是驱动 API,但我检查了驱动 API 源代码并发现它们正在使用 HttpRequestMessage 类。将我的代码从 WebRequest 更改为 HttpRequestMessage 解决了问题:

var request = new HttpRequestMessage(HttpMethod.Post, uri);
string strData = new JavaScriptSerializer().Serialize(jsonObject);

var content = new StringContent(strData, Encoding.UTF8, "application/json");
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
request.Content = content;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法将带有特殊字符的文件名上传到Google Drive REST 的相关文章

  • 在 2 个 .c 文件之间共享函数

    dir1有dir2 file1 c和file1 h dir2 有 file2 c 现在 如果我想在 file2 c 中访问 file1 c 中定义的函数 我需要在 file1 h 中声明它并在 file2 c 中包含 file1 h 这是一
  • 如何将 CroppedBitmap 转换为 BitmapImage

    我正在尝试将 CroppedBitmap 转换为 BitmapImage 编辑 不使用内存流 我尝试过直接转换它 似乎这不是一个选择 这应该没那么难 我正在尝试剪切 BitmapImage 的一部分 并创建一个仅包含新裁剪的 Bitmap
  • 在异步方法中使用时 HttpClient 标头被清空

    我正在使用 NET Framework 4 6 1 我的 Web api 中有一个控制器 其中有静态 HttpClient 来处理所有 http 请求 在 IIS 上托管我的应用程序后 大约每月一次 我的应用程序的所有传入请求都会出现以下异
  • 外部剃刀视图看不到外部模型

    我对外部剃刀视图有疑问 在我的项目中 我有主 mvc Web 程序集和动态加载的外部类库程序集 来自 DB 及其自己的控制器 视图和模型 这些程序集在运行时不会直接引用和加载 我能够通过为控制器创建自定义控制器工厂 为视图创建自定义虚拟路径
  • 从队列 ID 获取 Jenkins 作业构建 ID

    我成功地使用它来启动 Jenkins 作业 curl X POST http jenkins srv 8080 job MY JOB buildwithParameters this 1 that 2 user name pass 我还可以
  • 指向指针的指针和指向二维数组的指针之间的区别

    如果我有一个二维数组 B 定义为 int B 2 3 1 3 5 2 4 6 Is int p B与 一样int p 3 B int f B printf d f 1 gives 5作为输出 同时printf d f 给出 1 作为答案 为
  • C# Visual Studio 动态代码片段

    我正在开发一个 WinForms 项目 每天都会执行一些重复性的任务 所以我认为创建代码片段 https msdn microsoft com en us library ms165394 v vs 110 aspx会帮助我 但它仅适用于固
  • 如何处理作为参数传递到方法中的 Lambda 表达式 - C# .NET 3.5

    我对 Lambda 表达式的了解有点不稳定 虽然我可以编写使用 Lambda 表达式 又名 LINQ 的代码 但我正在尝试编写自己的方法 该方法采用一些 Lambda 表达式类型的参数 背景 我正在尝试编写一个方法 该方法从任何其他对象类型
  • 在 C/C++ 中绘制填充椭圆的简单算法

    在SO上 找到了以下绘制实心圆的简单算法 for int y radius y lt radius y for int x radius x lt radius x if x x y y lt radius radius setpixel
  • Linux C++ 调试器

    我正在寻找完美的 Linux C 调试器 我不期望成功 但搜索应该提供丰富的信息 我是一个非常有能力的 gdb 用户 但 STL 和 Boost 很容易压垮我的调试技能 并不是说我无法深入了解数据结构的内部结构 而是它需要很长时间 我通常会
  • 如何在 WCF 中反序列化自定义 SOAP 标头?

    我正在尝试向通过 WCF 的所有 SOAP 请求添加自定义标头 我发现这篇精彩的文章 http blogs msdn com b mohamedg archive 2012 10 21 adding custom soap headers
  • 第三方引用的 dll 未被复制来构建

    我有一个第三方 net dll 被我的 dll 类库项目 A 引用和使用 我的控制台应用程序项目 B 引用项目 A 我的问题是第三方 dll 没有被复制到控制台应用程序项目 B 的构建中 这里有什么问题呢 我的 dll 类库中引用的第三方
  • 内存不足异常

    我正在使用 C 和 asp net 开发一个网络应用程序 我一直收到内存不足的异常 该应用程序的作用是从数据源读取一堆记录 产品 可能是数百 数千 通过向导中的设置处理这些记录 然后使用处理的产品信息更新不同的数据源 虽然有多个 DB 类
  • 实体框架中的导航属性是什么

    我是实体框架的新手 当Visual Studio创建模型图时我们主要可以看到Entities Propertie和Navigation Properties这两个东西 那么这些Navigation Properties是什么 如何使用它们
  • 简单的喷射器将具体类型与生活方式结合起来

    我正在寻找一种可以使用指定的生活方式注册具体类型的方法 基本上如下所示 public void SomeFunction Type concrete Lifestyle lifestyle gt container Register con
  • 如何在 ASP.NET 3.5 中的 Web 内容页面设置页面标题

    我已经阅读了大量关于如何执行此操作的帖子 文章 但我仍然没有从内容页面获取页面标题集 我的页面呈现正常 但我无法从内容页面获取标题集 所有页面都根据母版页设置了标题 这是我的母版页的代码隐藏 Partial Class zSEO Inher
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • 更快的 WinSock sendto()

    我使用的是 Windows Server 2008 我的程序是用 C 编写的 我在 while true 循环中使用 WinSock2 和 sendto 来发送数据包 代码如下 while true if c snd gt max c sn
  • 预览MouseMove 与 MouseMove

    我有相当多的 XAML 经验 但最近我注意到我的大多数同事都使用预览鼠标移动代替鼠标移动事件 我一直用鼠标移动它对我很有帮助 但我忍不住问我什么时候应该使用预览鼠标移动什么时候鼠标移动 有什么区别 各自有什么优点和缺点等等 PreviewM
  • 如何在网页上显示进度条直到网页完全加载?

    我想在网页中显示进度条 加载弹出窗口 直到页面完全加载 我的网页很重 因为它包含一个 HTML 编辑器 这是一个基于 jQuery 的 HTML 编辑器 需要很多时间才能完全加载 在加载时 我希望在页面上显示一个进度条 该进度条将在整个页面

随机推荐

  • PHP instanceof 对于 true 条件返回 false

    我完全困惑为什么 php 的instanceof当以下情况时 运算符坚持认为此处的 LVALUE 不是已定义类的实例get class说是的 class WhereIn public function construct args echo
  • 用于训练神经网络的 MSE 成本函数

    In an 在线教科书 http neuralnetworksanddeeplearning com chap1 html关于神经网络和深度学习 作者通过最小化 a 来说明神经网络基础知识二次成本函数他说这是同义词均方误差 不过 有两件事让
  • Python 多处理问题/误解

    我在多处理方面遇到问题 我在 linux 2 6 36 上使用 python2 7 我知道使用更高级别的模块或库会更容易 但我正在尝试使用较低级别的函数 os fork 和 os exec 来确保我真正理解 这是一种学习练习 下面是我的代码
  • 我的 System.Numerics 命名空间在哪里?

    我正在使用 Visual Studio 2010 并尝试使用BigInteger输入 C 程序 这种类型应该可以在System Numerics命名空间 但我似乎没有在 Net 4 0 框架中安装它 当我输入 using System Nu
  • Android 两指旋转

    我正在尝试在 android 中实现两指旋转 但是它并没有按预期工作 目标是像 Google 地球一样实现旋转 用两根手指围绕焦点旋转图像 目前我的旋转侦听器如下所示 private class RotationGestureListene
  • 如果路线有 Tolls Google Maps API xml 请求,则返回

    在标准谷歌地图方向搜索中 在编写方向之前会提供咨询 说明该路线有收费站 如果没有通行费 则不会显示任何咨询信息 我有一个谷歌地图 API 请求 该请求显示地图 其中包含从 1 个家庭地址到 1 个工作地址的旅行距离和持续时间 我很难找到在哪
  • 使用 Ruby SDK 将文件上传到 Amazon S3

    我正在尝试上传文件 一个简单的 hello txt 我正在关注文档 但无法将其上传到我的存储桶 START AWS CLIENT s3 Aws S3 Resource new bucket s3 bucket BUCKET NAME beg
  • 启动 Rails 控制台时不运行 rufus-scheduler 的最佳方法

    我使用 rufus scheduler 来运行一些定期任务 但是当我只想测试东西时 在 Rails 控制台中使用它们非常烦人 自动启动控制台时是否有一种简单的方法来停止所有 rufus scheduler 任务 在启动调度程序的代码中 如果
  • 在php中将excel转换为xml

    我想读取 Excel 文件并根据该数据创建 XML 文件 在php中可以吗 Thanks 快速谷歌搜索发现this PHP https github com PHPOffice PHPExcelCodePlex 上的项目 您可能想看一下 它
  • 在 Windows Phone 8 上将 wav 文件压缩为 wma

    我希望在 Windows Phone 上将 wav 文件编码为 wma 或 mp3 ogg 等 我在网上没有找到任何资源 关于如何存档这个的任何想法 我正在尝试从麦克风录制声音并从手机上传 这就是为什么我更喜欢在发送之前压缩音频文件 从 W
  • 是否可以为 $httpBackend 响应设置通配符?

    假设我在 AngularJS 中有以下测试代码 var someURL var dummyJSON httpBackend whenGET someURL respond dummyJSON 有没有一种方法可以使其成为一组 URL 而不仅仅
  • 设置 HTMLEditorExtender 在新窗口中打开链接

    我正在尝试使用 Ajax Toolkit HTMLEditor 2012 年 6 月版本 来改进用于发布新闻项目和链接 主要是内部资源 的严格内部应用程序 一切都工作得很好 除了我无法让链接创建者创建在新窗口中打开的链接 基本上带有 tar
  • HTML 编辑器 — 一次编辑开始和结束标记

    是否有 HTML 编辑器可以在编辑开始标签时自动更改结束标签 阿普塔纳工作室 http www aptana com studio做 只需在 窗口菜单 gt 首选项 gt Aptana gt 编辑器 gt HTML gt 键入 中设置修改对
  • 使用 Python boto 从 S3 获取文件元数据

    我有一些二进制文件AWS S3 我需要得到file metadata like created time modified time并使用 Python Boto API 访问时间 我们尝试的是将文件复制到 EC2 实例 从那里我们使用os
  • 如何从图像中提取 RGB 并仅将 RG 绘制为图形? R 代表 X,G 代表 Y

    我正在尝试从图像中提取 RGB 分量并使用 matplotlib 绘制 3D RGB 直方图 但我不知道该怎么做 这是我当前的代码 import cv2 import numpy as np from scipy import ndimag
  • 如果 include() 是有条件的,即使不满足条件,PHP 也会包含该文件吗?

    这个问题困扰了我很长一段时间 我想我应该向专家寻求答案 我想知道通过单个文件汇集所有 PHP 请求是否是一种糟糕的编程技术 我一直在开发一个网站 不确定它是否会随着增长而扩展 因为我不能 100 确定 PHP 如何处理include 功能
  • 更改 PreferenceScreen 时保持操作栏显示

    我正在尝试在我的首选项屏幕中显示操作栏 为此 我在我的设置活动中添加了以下代码 public class PreferencesActivity extends ActionBarActivity Override protected vo
  • 如何将启动时窗口的位置定位到用户屏幕的右侧?

    我目前正在用 C 创建一个类似侧边栏的 WPF 应用程序 当用户启动应用程序时 我希望窗口自动将其自身定位到用户屏幕的一侧 我尝试了一些方法和谷歌搜索 但没有找到任何帮助 这是我正在尝试做的事情的一个例子 http prntscr com
  • 我的程序不再询问操作员

    include
  • 无法将带有特殊字符的文件名上传到Google Drive REST

    当我尝试使用 Web 应用程序将文件上传到 google Drive api 时 出现错误 并且该文件包含带重音的字符 例如 我使用两个请求上传文件 一个初始请求包含文件信息并将 uri 返回到文件应上传的位置 后续请求包含文件本身 第一次