2

私がやろうとしているのは、ここhttp://api.imgur.com/endpoints/image#image-uploadのAPIを使用してimgurサイトに写真をアップロードすることです。ドキュメントを読んだように、画像データは「image」パラメータに含まれている必要があります。つまり、POSTリクエストデータを「image = base64codedfile&title = blabla&type = base64」として設定すると、アップロードされますが、ファイルが破損しています。私のリクエストに画像、タイトル、タイプ名のパラメータを含まない「base64codedfile」のみが含まれる場合、それは魅力のように機能します。私は何か間違ったことをしていますか?

私がそれを次のように設定した場合:

string postData = "image="+Convert.ToBase64String(image)+"&type=base64&title=test;

画像が壊れています

生データのみの場合:

string postData = Convert.ToBase64String(image);

それは働いています

コード全体は次のようなものです。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.imgur.com/3/upload.xml");
request.Headers.Add("Authorization", "Client-ID >>myclientid<<");
request.Method = "POST";

string filePath = "d:\\test.jpg";
FileStream file = new FileStream(filePath, FileMode.Open);
byte[] image = new byte[file.Length];
file.Read(image, 0, (int)file.Length);
ASCIIEncoding enc = new ASCIIEncoding();
string postData = Convert.ToBase64String(image);
byte[] bytes = enc.GetBytes(postData);

request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;

Stream writer = request.GetRequestStream();
writer.Write(bytes, 0, bytes.Length);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
4

2 に答える 2