1

大家好,我正在尝试上传一个简单的图像,但 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) { try {

            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();

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

4

3 回答 3

1

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

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

于 2013-04-19T10:35:33.247 回答
1

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

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

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

有关详细信息,请参阅http://forum.jquery.com/topic/jquery-mobile-seems-to-clobber-ability-to-upload-files-via-forms

添加

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

于 2014-01-26T15:32:27.190 回答
0

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

于 2015-11-23T22:28:39.870 回答