Загрузка.mp4 через HTTPS
Я пытаюсь загрузить файл.mp4 в API Giphy.com. В нем говорится, чтобы отправить файл как "Бинарный", и я думаю, что я запутался, что именно они подразумевают под этим. Вот документы, если вы прокрутите вниз до "Загрузить конечную точку". https://developers.giphy.com/docs/
Вот что у меня сейчас.
Я пробовал несколько версий этого (используя StringContent
, MultipartFormDataContent
, ByteArrayContent
, HttpMessages
... и т. д.) и всегда получаю "400 - неверный запрос - исходный 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;
}
}
2 ответа
Похоже, ваш код не соответствует {api_key} должным образом. Вы нигде не используете переменную "dic". Вы можете попробовать с v1/gifs?api_key=YOUR_API_KEY&file=
вместо. Где YOUR_API_KEY должен быть заменен вашим ключом API, полученным из giphy.
всегда получаю '400 - Bad Request - No Source Url' (который, по словам документации, не требуется, если вы загружаете свою собственную), что заставляет меня поверить, что контент не распознается.
Вам необходимо указать имя для ByteArrayContent
, Документ показал, что Request Parameters
содержит 'file: string (binary), обязательный, если не указано source_image_url'.
Код должен выглядеть следующим образом:
MultipartFormDataContent multipartContent = new MultipartFormDataContent();
multipartContent.Add(new ByteArrayContent(bytes),"file");