当前位置: 首页 > 知识库问答 >
问题:

如何在Flurl中添加内容标题

赫连靖琪
2023-03-14
Public Async Function UploadFile(folder As String, filepath As String) As Task(Of Boolean) Implements ICloud.UploadFile
        Dim data As Byte() = File.ReadAllBytes(filepath)
        Dim uploadurl As String = "drive/items/" + folder + ":/" + Path.GetFileName(filepath) + ":/" + "content?access_token=" + Token.access_token


        Using client As New HttpClient()
            client.BaseAddress = New Uri(ApiUrl)

            Dim request As HttpRequestMessage = New HttpRequestMessage(HttpMethod.Put, uploadurl)

            request.Content = New ByteArrayContent(data)
            request.Content.Headers.Add("Content-Type", "application/octet-stream")
            request.Content.Headers.Add("Content-Length", data.Length)

            Dim response = Await client.SendAsync(request)

            Return response.IsSuccessStatusCode
        End Using
    End Function

我已经尝试了Flurl的常规PutJsonAsync方法,但没有成功。这是我的代码中唯一的非flurl部分。

事先Thanx。

共有1个答案

徐丰茂
2023-03-14

这里真正的问题是,目前在Flurl中没有对发送流或字节数组的开箱即用支持。我计划很快添加一些,但是根据您已经拥有的实现细节,很容易通过扩展方法自己添加这些。(原谅C#,希望你能翻译成VB。)

public static Task<HttpResponseMessage> PutFileAsync(this FlurlClient client, string filepath) 
{
    var data = File.ReadAllBytes(filepath);
    var content = new ByteArrayContent(data);
    content.Headers.Add("Content-Type", "application/octet-stream");
    content.Headers.Add("Content-Length", data.Length);
    return client.SendAsync(HttpMethod.Put, content: content);
}

如果您已经有flurlclient,那么上面的方法就可以工作,但是正如文档所描述的,最好有相应的stringurl扩展,它们可以委托给上面的方法:

public static Task<HttpResponseMessage> PutFileAsync(this Url url, string filepath)
{
    return new FlurlClient(url).PutFileAsync(filepath);
}

public static Task<HttpResponseMessage> PutFileAsync(this string url, string filepath)
{
    return new FlurlClient(url).PutFileAsync(filepath);
}

把它们放在一个静态帮助器类中,它们应该可以与Flurl无缝地工作:

await uploadurl.PutFileAsync(filepath)
 类似资料:
  • 我在React应用程序中使用: 我想在最后一列标题中添加一些按钮(而不是列名): 其中列: 那要怎么做?有可能吗?我什么都找不到

  • 我有一本书。NETCore2.0WebAPI应用程序,其中我将“Flurl.Http”(版本2.1.0)NuGet包添加到我的项目中。 我正在尝试使用Flurl对一个VisualStudioTeamServices(VSTS)APIendpoint进行简单的RESTAPI调用。 但是,我正在调用的特定VSTS api终结点要求将Content-Type设置为“应用程序/json-补丁json”,而

  • 注意: Adobe Muse 不再添加新增功能,并将于 2020 年 3 月 26 日停止支持。有关详细信息和帮助,请参阅 Adobe Muse 服务结束页面。 Adobe Edge Animate 是一种 Web 交互式设计工具,可让您使用 HTML5 等 Web 标准向网站添加动画内容。您可以使用 Animate 中直观的时间轴界面形象地构建引人入胜的 HTML5 动画,当访客在所有现代浏览器

  • 问题内容: 我在加载内容时使用按钮微调器,当用户单击“搜索”按钮时,将加载内容,这时将更改为“搜索”,并且将显示微调器(此处按钮将被禁用)。加载后(已解决承诺),内容将恢复为“搜索”(此处将启用按钮)。 我尝试了以下代码,但始终显示微调器。 HTML: 剧本: 更新的小提琴: http : //jsfiddle.net/xc6nx235/18/ 问题答案: 您需要做的就是使用或指令。 ng-sho

  • 以下代码使用CORS协议完美地发送请求并接收响应。我想将内容类型标头更改为“应用程序/json”而不是“应用程序/x-www-form-urlencoded”。但是,当我将内容类型替换为“应用程序/json”时,请求失败。当我在浏览器中检查请求时,我可以看到内容类型标头已被删除而不是更改。 来自以上代码的请求 当“应用程序/x-web-form-urlencoded”被替换为“应用程序/json”