我正在尝试将.mp4文件上传到Giphy.com的API。它说以“二进制”的形式发送文件,我想我对它们的确切含义感到困惑。如果您滚动到“上传端点”的底部,则为以下文档。 https://developers.giphy.com/docs/
这就是我现在所拥有的。
我已经尝试了多个版本(使用StringContent
,MultipartFormDataContent
,ByteArrayContent
,HttpMessages
等),总是收到'400-Bad Request -No Source Url'(如果您上传的是自己的,则不需要文档说),这使我相信内容未被识别。
public async Task<HttpResponseMessage> UploadVideoAsync(StorageFile file)
{
using (var stream = await file.OpenStreamForReadAsync())
{
byte[] bytes = new byte[stream.Length];
await stream.ReadAsync(bytes, 0, (int)stream.Length);
Dictionary<string, string> dic = new Dictionary<string, string>
{
{ "file", Encoding.ASCII.GetString(bytes) },
{ "api_key", api_key }
};
MultipartFormDataContent multipartContent = new MultipartFormDataContent();
multipartContent.Add(new ByteArrayContent(bytes));
var response = await httpClient.PostAsync($"v1/gifs?api_key={api_key}", multipartContent);
var stringResponse = await response.Content.ReadAsStringAsync();
return response;
}
}
答案 0 :(得分:0)
您的代码似乎与{api_key}不正确匹配。您不会在任何地方使用“ dic”变量。您可以改为使用v1/gifs?api_key=YOUR_API_KEY&file=
。应该用从giphy获得的API密钥替换YOUR_API_KEY。
答案 1 :(得分:0)
总是得到“ 400-错误请求-没有源网址”(如果您上传的是自己的,则文档说不需要),这使我相信内容未被识别。
您需要为ByteArrayContent
应用名称。 document已显示Request Parameters
包含“ 文件:如果未提供source_image_url,则为字符串(二进制)”。
代码应如下所示:
MultipartFormDataContent multipartContent = new MultipartFormDataContent();
multipartContent.Add(new ByteArrayContent(bytes),"file");