【发布时间】:2020-09-14 10:34:19
【问题描述】:
应用程序将文件发送到 Web 服务时出现问题。这是我的端点/控制器。
[HttpPost]
public async Task<IActionResult> Post(List<IFormFile> files)
{
long size = files.Sum(f => f.Length);
foreach (var formFile in files)
{
if (formFile.Length > 0)
{
var filePath = "C:\\Files\\TEST.pdf";
using (var stream = System.IO.File.Create(filePath))
{
await formFile.CopyToAsync(stream);
}
}
}
这个控制器在 Postman 中运行良好。
这是我提出请求的应用程序:
byte[] bytes = System.IO.File.ReadAllBytes("C:\\Files\\files.pdf");
Stream fileStream = File.OpenRead("C:\\Files\\files.pdf");
HttpContent bytesContent = new ByteArrayContent(bytes);
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Add(bytesContent,"file", "files.pdf");
try
{
var response = await client.PostAsync(url, formData);
}catch(Exception ex)
{
Console.WriteLine(ex);
}
它不起作用。我没有在控制器中收到文件。我也试过这个:
string fileToUpload = "C:\\Files\\files.pdf";
using (var client = new WebClient())
{
byte[] result = client.UploadFile(url, fileToUpload);
string responseAsString = Encoding.Default.GetString(result);
}
但结果是一样的。你能帮忙吗?
【问题讨论】:
-
您有可供我们使用的日志吗?
-
当调用请求“var response = await client.PostAsync (url, formData)”时,程序终止,或调用我在控制器中收到的请求,但 ,,List
文件”一片空白”。它不会抛出任何异常。看起来他没有发送文件。我不知道如何找出其他的 -
当您使用 HttpClient 时,我敢打赌您还应该在请求中添加一些标头,以告知服务器您正在发送文件。检查这个答案stackoverflow.com/questions/42212406/…
-
对于带有httpclient的版本,请求被发送,控制器不接收。我不知道为什么
标签: c# asp.net web-services upload httpwebrequest