上传文件 MVC 4 Web API .NET 4

2023-11-27

我使用的是 Visual Studio 2012 Express 附带的 MVC 版本。 (微软.AspNet.Mvc.4.0.20710.0)

我认为这是 RTM 版本。

我在网上找到了很多例子,它们都使用了这段代码:

    public Task<HttpResponseMessage> PostFormData()
    {
        // Check if the request contains multipart/form-data.
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        string root = HttpContext.Current.Server.MapPath("~/App_Data");
        var provider = new MultipartFormDataStreamProvider(root);

        // Read the form data and return an async task.
        var task = Request.Content.ReadAsMultipartAsync(provider).
            ContinueWith<HttpResponseMessage>(t =>
            {
                if (t.IsFaulted || t.IsCanceled)
                {
                    return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
                }

                // This illustrates how to get the file names.
                foreach (MultipartFileData file in provider.FileData)
                {
                    Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                    Trace.WriteLine("Server file path: " + file.LocalFileName);
                }
                return Request.CreateResponse(HttpStatusCode.OK);
            });

        return task;
    }

但这段代码总是以 continueWith 结尾t.IsFaulted == true。异常内容如下:

MIME 多部分流意外结束。 MIME 多部分消息不是 完全的。

这是我的客户表格。没什么花哨的,我想做 jquery 表单插件来进行 ajax 上传,但我什至无法让这种方式工作。

<form name="uploadForm" method="post" enctype="multipart/form-data" action="api/upload" >
    <input type="file" />
    <input type="submit" value="Upload" />
</form>

我读到这是由解析器在每条消息末尾期待 /CR /LF 引起的,并且该错误已于 6 月修复。

我不明白的是,如果它真的被修复了,为什么它不包含在这个版本的 MVC 4 中?为什么互联网上有这么多示例声称这段代码可以工作,但在这个版本的 MVC 4 中却不起作用?


你缺少一个name文件的属性input.

<form name="uploadForm" method="post" enctype="multipart/form-data" action="api/upload" >
    <input name="myFile" type="file" />
    <input type="submit" value="Upload" />
</form>

没有它的输入将不会被浏览器提交。所以你的表单数据是空的导致IsFaulted被断言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上传文件 MVC 4 Web API .NET 4 的相关文章

  • MVC 4 RC - Aspnet_regsql.exe

    我正在尝试使用 MVC 4 RC 默认模板启用登录 我以与 MVC 3 中相同的方式进行操作 Aspnet regsql exe gt SQL 服务器 然后我让连接字符串指向 SQL 服务器 当我尝试注册新用户时 我得到以下信息 Serve
  • 如何检测Web Api Post请求Json中的重复键

    当请求 Json 包含重复键时 我需要从 ASP NET Web API Post 请求返回 400 错误 例如 如果请求是 key1 value1 key2 1000 key2 2000 key3 value3 那么我希望由于有两个 ke
  • Window.AllowsTransparent 设置为 true 时 wpf 中的运行时错误

    当我设置时 我在运行时抛出异常AllowsTransparency True 我得到一个例外 说WindowStyle不能设置为None if AllowsTransparency设置为 true 即使我明确地说WindowStyle被设定
  • MVC4如何在没有导航属性的情况下加载相关数据

    我对 MVC 相当陌生 并且已经使用 EF database first 创建了一个 MVC4 应用程序 该数据库不包含外键定义 我无法添加它们 我不拥有该数据库 以下是数据库中的两个示例类 public partial class All
  • .NET Web API - 添加日志记录

    我正在寻找有关处理 API 日志记录的最佳方法的帮助 我想将所有请求和响应记录到 sql 或文本文件 如果这是最好的方法 目前我已经在 SQL Server 的日志表中插入一行 我使用名为 LogAction 的静态方法来执行此操作 并在
  • 有没有办法在 asp.net core 3.1 Rest-API 中使用 Identity Server 功能

    我正在使用 asp net core 3 1 在服务器中使用 Rest API 的项目 以 Angular 作为单页应用程序的前端 从每个客户端 用户需要提供其用户名和密码才能访问 Web API 的受保护部分 我想使用 Identity
  • 如何裁剪图像的任意选定区域并将其保存到服务器?

    我用一张图来总结一下这个场景 我正在尝试在我的网站中创建一个设置个人资料图片的功能 我想要一个页面在图像字段中以原始尺寸显示上传的图像 但个人资料图片的大小应该是 200 153 所以我想要用户可以调整图片大小 也可以将一个框架 框架大小为
  • 我的 POST 编辑操作是否会覆盖 EF 中的所有字段?

    假设我有一个包含 7 个字段的数据库记录 我只想编辑字段 1 的内容 所以我点击了 GET EDIT 操作 它使用我的视图模型呈现强类型视图 然后我继续更新字段 1 但是 我的POST 操作包含所有字段的 映射 如下所示 实体框架也是如此
  • 检查Web服务是否存在

    有人可以告诉我确定给定 URL 是否存在 Web 服务 ASP NET 的最佳方法吗 我假设一种方法类似于使用 System Net Webclient 发出请求 但我如何确定它是否是有效的 Web 服务以及我应该发出哪种类型的请求 编辑
  • 在(每个)Web API 操作之前执行代码

    我有一个 Web API 接口 我正在尝试适应多租户架构 以前 我们采用 WCF 模式 将参数 客户端 ID 传递给服务 然后服务将其存储起来以供稍后在代码中使用 这意味着客户端 ID 不必是传递给每个调用的第一个参数 我想对 Web AP
  • 如何将除 Web API 之外的所有内容路由到 /index.html

    我一直在研究一个AngularJS项目 在 ASP NET MVC 内部使用 Web API 除非您尝试直接访问有角度的路由 URL 或刷新页面 否则它效果很好 我认为这将是我可以处理的事情 而不是胡闹服务器配置MVC的路由引擎 当前的We
  • EntityFramework.dll 中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理

    我正在尝试为部门名称制作下拉列表 我正在使用MVC5 我看到了太多关于堆栈溢出的解决方案 但我从未找到与 MVC5 相关的有价值的解决方案 Database Name AppraisalDBContext Table Name Depart
  • Web API 和 ASP MVC 之间的主要区别是什么

    标题确实总结了我的问题 我已经使用了这两种技术 但我不确定其中一种技术与另一种技术有何显着不同 在本质上 在设计一个宁静的 Web 应用程序时 选择 ASP MVC 或 Web API 时应考虑哪些标准和 或指南 Purpose ASP N
  • 从delphi应用程序调用.net4.0 com服务器后出现错误异常

    我们正在将代码库从 BDS2006 迁移到 Rad Studio XE 我们发现了一些非常奇怪的行为 如果我们在从 Net4 0 中实现的 COM 服务器创建一些对象后进行无效的浮点运算 即除以零 我们不会没有得到正常异常 即 EDivis
  • 如何在 asp.net mvc 4 中使用 signalr v2 beta

    v2 之前 RouteTable Routes MapHubs 在 v2 中 MapHubs 不再存在 wiki 说添加一个 Startup 类和一个 Configuration 方法以及对 app MapHubs 的调用 namespac
  • 未调用派生类的 C++/cli 静态构造函数

    如上所述在我的另一篇帖子中 https stackoverflow com q 29410579 2505186从 VS 2008 net 3 5 迁移到 VS 2013 并使用 net 4 0 而不是 4 5 后 我发现我的应用程序出现了
  • 将数组从 javascript 传递到控制器 MVC 4

    我正在使用剃刀 但很难将数组传递给控制器 该数组包含我制作的对象 我正在尝试执行此操作 ajax type POST url HomePage HandleOperations data JSON stringify operationCo
  • 在并行调用中,限制每秒执行次数

    使用 TPL Parallel ForEach 有一种开箱即用的方法来限制每单位时间调用方法的次数 即每秒不超过 50 次调用 这与限制线程数不同 也许有一些简单的技巧可以使这项工作正常进行 一种解决方案是制作以下线程安全版本https s
  • Asp.net WEB API - 如果我使用 POST 而不是 PUT 和 DELETE 会出现什么问题?

    我刚刚开始使用 Web API 虽然我发现创建我需要的方法和一些配置非常容易 但现在我遇到了一个我不知道如何解决的问题 一些将使用我的服务的应用程序非常旧 不支持 DELETE 和 PUT 方法 例如 j2me 应用程序 我发现可以通过传递
  • 允许 .NET WebApi 忽略 DOCTYPE 声明

    我正在尝试通过 WebApi 方法将 XML 反序列化为对象 我有以下课程 XmlRoot IsNullable false public class MyObject XmlElement Name public string Name

随机推荐