gpt4 book ai didi

asp.net-mvc - MultipartFormDataStreamProvider 的问题

转载 作者:行者123 更新时间:2023-12-02 12:20:52 27 4
gpt4 key购买 nike

我正在尝试关注 this tutorial ,而且我意识到,即使我复制并粘贴他的代码,我的 ApiController 中也会出现两个编译错误。

IEnumerable<HttpContent> bodyparts = Request.Content.ReadAsMultipartAsync(streamProvider);

这告诉我 ReadAsMultipartAsync 的返回值不能转换为 HttpContent 的 IEnumerable。

IDictionary<string, string> bodypartFiles = streamProvider.BodyPartFileNames;

这告诉我,BodyPartFileNames 不存在于streamProvider 中,这似乎与本教程以及我见过的其他几篇博客文章和 StackOverflow 问题相反。

有人知道这笔交易是什么吗?

完整文件:

using AsyncFileUpload.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;


namespace AsyncFileUpload.Controllers
{
public class UploadingController : ApiController
{
private const string PATH = "C:\\_projects\\learning";

[HttpPost]
public async Task<IList<FileDesc>> Post()
{
List<FileDesc> result = new List<FileDesc>();
if (Request.Content.IsMimeMultipartContent())
{
try
{
if (!Directory.Exists(PATH))
{
Directory.CreateDirectory(PATH);
}

MultipartFormDataStreamProvider streamProvider =
new MultipartFormDataStreamProvider(PATH);

IEnumerable<HttpContent> bodyparts = Request.Content.ReadAsMultipartAsync(streamProvider);
IDictionary<string, string> bodypartFiles = streamProvider.BodyPartFileNames;
IList<string> newFiles = new List<string>();

foreach (var item in bodypartFiles)
{
var newName = string.Empty;
var file = new FileInfo(item.Value);

if (item.Key.Contains("\""))
{
newName = Path.Combine(file.Directory.ToString(),
item.Key.Substring(1, item.Key.Length - 2));
}
else
{
newName = Path.Combine(file.Directory.ToString(), item.Key);
}

File.Move(file.FullName, newName);
newFiles.Add(newName);
}

var uploadedFiles = newFiles.Select(i =>
{
var fi = new FileInfo(i);
return new FileDesc(fi.Name, fi.FullName, fi.Length);
}).ToList();

result.AddRange(uploadedFiles);
}
catch (Exception e)
{
// NOOP
}
}
return result;
}
}
}

最佳答案

ReadAsMultipartAsync 返回一个 Task<> 对象。采用 .Result 属性(阻塞)或使用await关键字等待任务(首选)。

BodyPartFileNames 在 RTM 版本中已更改,现在使用 FileData 属性。

参见:http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2

关于asp.net-mvc - MultipartFormDataStreamProvider 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12060785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com