- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 ASP.Net Core Web API,其 Controller POST 方法定义如下:
[HttpPost("SubmitFile")]
public async Task<IActionResult> SubmitFile(IFormFile file)
{
}
我有一个调用 API SubmitFile() 方法的客户端方法,定义如下:
[HttpPost]
public async Task<IActionResult> Index(ICollection<IFormFile> files)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_options.SiteSpecificUrl);
foreach (var file in files)
{
if (file.Length <= 0)
continue;
var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
var fileContent = new StreamContent(file.OpenReadStream());
fileContent.Headers.Add("X-FileName", fileName);
fileContent.Headers.Add("X-ContentType", file.ContentType);
var response = await client.PostAsync(_options.WebApiPortionOfUrl, fileContent);
}
}
return View();
}
执行客户端发送时,在服务器端,SubmitFile() 中的断点显示文件参数为空。如何正确发送文件?保留服务器端 API 很重要,因为我有 Swashbuckle/Swagger 正确生成可以发送文件的 UI。
最佳答案
我找到了几种方法来做到这一点。这里是最简单的。请注意,这是一个 ASP.Net Core 客户端解决方案:
[HttpPost]
public async Task<IActionResult> Index(ICollection<IFormFile> files)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_options.SiteSpecificUrl);
foreach (var file in files)
{
if (file.Length <= 0)
continue;
var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
using (var content = new MultipartFormDataContent())
{
content.Add(new StreamContent(file.OpenReadStream())
{
Headers =
{
ContentLength = file.Length,
ContentType = new MediaTypeHeaderValue(file.ContentType)
}
}, "File", fileName);
var response = await client.PostAsync(_options.WebApiPortionOfUrl, content);
}
}
}
}
此 Controller 方法从 .cshtml 页面调用,如下所示:
@{
ViewData["Title"] = "Home Page";
}
<form method="post" asp-action="Index" asp-controller="Home" enctype="multipart/form-data">
<input type="file" name="files" multiple />
<input type="submit" value="Upload" />
</form>
此表单显示两个按钮,“选择文件”和“上传”,前者显示“选择文件”对话框,后者调用 HomeController.Index 方法。
关于c# - 无法使用 C# 客户端将 IFormFile 发送到 ASP.Net Core Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44593881/
我有一个物理文件,我想将它传递给需要 IFormFile 类型(用于单元测试)的 Controller 方法。 我找不到任何实例化 IFormFile 接口(interface)的类,这意味着我无法创
我正在开发 ASP.NET Core 2 MVC 应用程序,尝试设置服务层。我有一个非常基本的应用程序,我想在其中: 在姓名旁边上传一张图片 向数据库添加一条记录 将文件存储在磁盘上的 wwwroot
我正在尝试通过 IFormFile 读取一个 zip 文件,我正在浏览里面的文件以解压缩选定的扩展名并解压缩它,但我无法使用IFormFile 来读取它。它说无法将 IFormFile 转换为字符串。
我上传了一张图片并想将它发送到第三方服务(Cloudinary)而不将文件保存在我的服务器中。 public async Task> GetImagesUrlsByImage(IFormFile im
[Route("api/file")] [Produces("application/json")] [Consumes("application/json", "application/json-p
我正在使用 C# 和 Net Core 开发一些 REST API 我的存储库中有一个函数接受类型为 IFormFile 的参数. public async Task UploadFile(IForm
[Route("api/file")] [Produces("application/json")] [Consumes("application/json", "application/json-p
是否可以将 IFormFile 文件添加到 .net core 中的电子邮件附件中?我正在使用 formdata 从 Angular 获取文件。 for (let file of this.file
我有以下代码(我仍在开发它)成功地将文件上传到所需的路径。 private async Task AddImage(IFormFile image, string filePath) {
我正在尝试使用 this piece of code 将文件保存在磁盘上. IHostingEnvironment _hostingEnvironment; public ProfileControl
我正在尝试阅读 IFormFile从这样的 HTTP POST 请求中收到: public async Task UploadDocument([FromForm]DataWrapper data)
我正在尝试使用 IFormFile 作为嵌套 ViewModel 中的属性。我在尝试将 ViewModel 绑定(bind)到运行时的 Controller 操作时遇到问题。 AJAX 请求停止并且永
我有一个 .NET Core API 项目,它有一个简单的端点来上传文件: [Route("api/[controller]")] [ApiController] public class Files
我有一个 .NET Core API 项目,它有一个简单的端点来上传文件: [Route("api/[controller]")] [ApiController] public class Files
我的 WebAPI 方法已准备好接受文件作为参数,如下所示:(例如 URI“https://localhost:44397/api/uploadfile” [Route("api/[controll
我用这段代码改变了图像的大小。但此方法返回 FileStreamResult。我想将 FileStreamResult 转换为 IFromFile。我该怎么做? 注意:我正在使用 CoreCompat
在 ASP.Net Core Web API 中为我的一个服务类编写单元测试时,我需要模拟一个 IFormFile。因此我决定像这样模拟它(使用最小起订量): fileMock.Setup(x =>
我有一个 .NET Core 应用程序,它有一个名为 Documents 的 Controller ,带有一个 POST 签名,如下所示: [HttpPost] public async Task P
我正在制作一个可以上传到数据库和从数据库检索图像的 API。第一部分已完成 - 图像存储在 IFormFile 变量中,并作为 bytes[] 传递给数据库。 图片模型: public class I
我有后端端点 Task Post(IFormFile csvFile)我需要从 HttpClient 调用这个端点。目前我得到 Unsupported media type error .这是我的代码
我是一名优秀的程序员,十分优秀!