Я пытаюсь загрузить файл с Keep2Share API
В документации есть реализация Php, а именно:
$data = $this->getUploadFormData($parent_id, $preferred_node);
$curl = curl_init();
$postFields = $data['form_data'];
$postFields[$data['file_field']] = new CURLFile($file);
curl_setopt_array($curl, [
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $data['form_action'],
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postFields,
]);
$response = curl_exec($curl);
if ($this->verbose) {
echo '<<', $response, PHP_EOL;
}
return json_decode($response, true);
getUploadFormData
метод вернуть JSON со следующими данными
status: [success]
status_code: [200,400]
form_action: string
file_field: string
form_data: [
params: string
signature: string
]
Но мне нужно перевести его на C #, я пытаюсь следующее
//dat is a object with getUploadForm data
var dat = await this.GetUploadFormData();
HttpContent stringContent = new StringContent(dat.form_data.signature);
HttpContent bytesContent = new ByteArrayContent(System.IO.File.ReadAllBytes(filename));
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Add(stringContent, "signature", "signature");
formData.Add(bytesContent, "file", "file");
var response = await client.PostAsync(dat.form_action, formData);
using (var reader = new StreamReader(await response.Content.ReadAsStreamAsync()))
{
Console.WriteLine(await reader.ReadToEndAsync());
}
return await response.Content.ReadAsStreamAsync();
}
Но я получаю
{«name»: «Bad Request», «message»: «Неправильная подпись. IP
. 1 ** 58. * 54,213» , «код»: 0, «Статус»: 400}
Я почти уверен, что моя проблема в том, что я не передаю параметр подписи, как это должно быть
это тот случай?
что я делаю не так?
Спасибо!
РЕДАКТИРОВАТЬ
Пример объекта getUploadFormData должен быть
"status":"success",
"code":200,
"form_action":"http://file-api-27.keep2share.cc:8000/upload",
"file_field":"file",
"form_data":{
"ajax":true,
"_params":null,
"signature":"2eda59a25137a78ef05513c60182cebe9972d9d1b80d9e643e0a8104dcdf42f59cfbc76680c7caf2d93e090c74ebdcf19da664c53e9da14992d604469a634887"}
Задача ещё не решена.
Других решений пока нет …