【问题标题】:Upload Image MVC always null上传图像 MVC 始终为空
【发布时间】:2013-04-12 16:56:46
【问题描述】:

大家好,我正在尝试上传一个简单的图像,但 HttpPostedFileBase 始终保持为空。这是我的代码,我不知道我做错了什么。

这是我在设计视图中的代码:

<fieldset>
    <legend>PictureModel</legend>

    <div class="editor-label">
        <%: Html.LabelFor(model => model.PrivacyTypeID) %>
    </div>
    <div class="editor-field">
        <%: Html.DropDownList("PrivacyTypeID", null, new { name = "PrivacyTypeID", title = "Please select privacy type.", id = "PrivacyTypeID" }) %>
        <%: Html.ValidationMessageFor(model => model.PrivacyTypeID) %>
    </div>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.File1) %>
    </div>
    <div class="editor-field">
        **<input type="file" name="File1" />**
        <%: Html.ValidationMessageFor(model => model.File1) %>
    </div>        
    <div class="editor-label">
        <%: Html.LabelFor(model => model.Description) %>
    </div>

这是我控制器中的代码:

public ActionResult AddPicture(Guid id, PictureModel model, HttpPostedFileBase File1) { 尝试 {

            if (ModelState.IsValid)
            {
                try
                {
                    Guid albumid = id;

                    if (File1 != null)
                    {
                        var physicalPath = Path.Combine(Server.MapPath("~/Gallery"), System.IO.Path.GetFileName(File1.FileName));
                        File1.SaveAs(physicalPath);
                        PicturesBL pictures = new PicturesBL();

谁能告诉我这是什么问题?

【问题讨论】:

  • 忘记显示初始开始表单标签
  • 请不要将“ASP.NET MVC”简称为“MVC”。一种是框架,另一种是与语言无关的设计模式。这就像调用 IE - “互联网”
  • stackoverflow.com/questions/41347644/… 这是我的问题,有人吗?

标签: asp.net-mvc file-upload httppostedfilebase


【解决方案1】:

谁能告诉我这是什么问题?

您显示的代码没有任何问题。我怀疑问题出在您使用 AJAX 调用而不是普通提交提交此表单的事实。但如您所知,您无法使用 AJAX 上传文件。这就是您的代码无法正常工作的原因。如果您想使用 AJAX 上传文件,您可以使用一些客户端插件,例如 UploadifyFine uploader。这也可以使用新的File API 在 HTML5 中本地完成。当然,这只适用于支持它的现代浏览器。如果您需要支持旧版浏览器,一些可用的客户端上传插件可能会对您有所帮助。

【讨论】:

【解决方案2】:

这也让我发疯了。几个小时后,我意识到,

@Scripts.Render("~/bundles/jquerymobile")

在 _Layout.cshtml 中导致了问题。注释掉后,上传成功。

详情请见http://forum.jquery.com/topic/jquery-mobile-seems-to-clobber-ability-to-upload-files-via-forms

添加

我的表单的
data_ajax="false"
属性解决了这个问题。

【讨论】:

    【解决方案3】:

    确保 model.File1 类型是 HttpPostedFileBase 而不是 HttpPostedFile 并且表单包含enctype = "multipart/form-data" 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2015-05-29
      • 1970-01-01
      相关资源
      最近更新 更多