2016-10-17 11 views
1

Gfytcat APIを使用して、自分のマシンからmp4をアップロードするのに苦労しています。たぶんそれは私だけですが、APIのドキュメントはあまりうまくいっていないようです。Gfycat APIファイルのアップロード

次のコードは新しいgfyを正常に要求しますが、次のエラーでアップロードに失敗します:204:コンテンツなし。

using (var client = new HttpClient()) 
{ 
    var response = await client.PostAsync(@"https://api.gfycat.com/v1/gfycats", null); 

    var responseString = await response.Content.ReadAsStringAsync(); 

    var newGfycatResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<NewGfycatResponse>(responseString); 

    Console.WriteLine("gfyname: " + newGfycatResponse.gfyname); 
    Console.WriteLine("secret: " + newGfycatResponse.secret); 

    var filePath = @"C:\Users\Julien\Videos\black cat jumping.mp4"; 
    var file = File.ReadAllBytes(filePath); 

    using (var content = new MultipartFormDataContent()) 
    { 
     content.Add(new StringContent(newGfycatResponse.gfyname), "key"); 
     content.Add(new ByteArrayContent(file), "file", newGfycatResponse.gfyname); 

     using (var message = await client.PostAsync("https://filedrop.gfycat.com", content)) 
     { 
      var input = await message.Content.ReadAsStringAsync(); 

      Console.WriteLine(input); 
     } 
    } 
} 

答えて

2

次のような行が間違っています。フィールドに "file"という名前をつけなければなりません。ファイルの名前として指定します。

content.Add(new StreamContent(new MemoryStream(file)), "file", newGfycatResponse.gfyname); 

****あなたは以下のように、そのファイルの内容のヘッダを変更することがあり

を編集します。 ASP.NET WebApi: how to perform a multipart post with file upload using WebApi HttpClient

var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName)); 
    fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
    { 
     FileName = "Foo.txt" 
    }; 
    content.Add(fileContent); 
+0

感謝:以下

から取られています。これは問題であり、今や別の問題を引き起こしています。質問が更新されました。 – Julien

+0

これはGfycatが400の悪い要求で応答するようにします。これは後ろ向きのステップです。 – Julien

+0

実際に失敗したことは確かですか? 204は、必ずしも失敗を意味するものではなく、実際にはほとんどのシナリオで成功した応答であると考えられています。 – QuietSeditionist

関連する問題