我尝试使用https://dropfile.to/api API服务。我需要有文件上传表单,基本上获取IFormFile并将其上传到API。问题是,我收到状态为2的奇怪请求,这意味着"未知错误"。在他们的网站上它说我应该使用:
curl -F "file=@screenshot.jpg" https://d1.dropfile.to/upload
如何在ASP.NET中执行此类操作?我尝试了在本网站上找到的所有解决方案,但没有一个能够有效。
到目前为止我得到了什么:
public static async Task<HttpResponseMessage> PostFile(string address, IFormFile file)
{
using (var client = new HttpClient())
{
using (var binaryReader = new BinaryReader(file.OpenReadStream()))
{
var data = binaryReader.ReadBytes((int)file.OpenReadStream().Length);
var bytes = new ByteArrayContent(data);
var multiContent = new MultipartFormDataContent {
{
bytes, "file", file.FileName
}
};
return await client.PostAsync(address, multiContent);
}
}
}
仅限HTML表单的工作版本:
<form action="https://d3.dropfile.to/upload" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" id="files" multiple="multiple">
<input type="submit">
</form>
我无法使用HTML表单版本,因为我会跟踪上传的文件。
有效回复:
{
"files": [
"eBooks.txt",
"znOu9ZB",
"wUFTssk",
"14323"
],
"status": 0,
"url": "https:\/\/dropfile.to\/znOu9ZB",
"access_key": "wUFTssk"
}
回复失败:
{
"files":{
"1":"ZW2FSA8",
"2":"XzBpM6w"
},
"status":2
}
感谢。
答案 0 :(得分:0)
我最终使用名为RestSharp的Nugget包。我的代码如下:
var client = new RestClient("https://d1.dropfile.to/");
var request = new RestRequest("upload", Method.POST);
request.AddFileBytes("file", file, $"{Guid.NewGuid()}.zip", "application/zip");
var response = client.Execute(request).Content;