ASP.NET CORE 2.0 - cURL文件上传

时间:2018-02-03 23:50:16

标签: asp.net-mvc asp.net-core asp.net-core-mvc

我尝试使用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
}

感谢。

1 个答案:

答案 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;