0

我使用 MVC5。我在使用 HttpPostedFileBase 上传文件时遇到了一些问题。我有一个表格,我可以从我的磁盘中选择一个文件并输入一些关于它的信息(在文本框中)。当我提交表单时,将调用控制器操作。在这个动作中,我打开文件并检查它是否有一些特定的数据(与文本框中的数据相关)。所以我在这里做一些验证。我不能使用 JQuery 来做到这一点——它很复杂。服务器端验证是唯一的选择。最后,如果验证失败,我将模型(带文件)返回到视图,但之后我在文件字段旁边出现验证错误,但文件字段为空。我读过很难将文件返回到视图中。我不想使用 ajax 上传文件。我想做的很简单。如果你有文章可以帮到你,请与我分享。

我该如何解决我的问题?

4

1 回答 1

0

我知道您提到不使用 AJAX 进行文件上传,但我认为这个解决方案非常简单。

使用以下 jQuery 插件 ( https://blueimp.github.io/jQuery-File-Upload/ ),您可以自动化该过程,如果您的文件中存在任何验证问题,那么您可以返回以下模型并显示错误.

string errors = "Errors returned from complex logic";
if (!String.IsNullOrEmpty(errors))
{
    // error response
    status = new ViewDataUploadFilesResult()
    {
        name = Path.GetFileName(hpf.FileName),
        size = hpf.ContentLength,
        error = errors
    };
}

这是与 jQuery 文件上传文档匹配的响应所需的类:https ://github.com/blueimp/jQuery-File-Upload/wiki/Setup

public class ViewDataUploadFilesResult
{
    public string name { get; set; }
    public int size { get; set; }
    public string type { get; set; }
    public string url { get; set; }
    public string error { get; set; }
}

如果我理解正确,由于文件已经在用户计算机上,您只需要将文件关联到他们尝试上传的当前文件即可返回错误。为了做到这一点,他们不必重新选择要上传的文件。我看不出有任何其他理由需要将实际文件返回给用户,因为他们已经拥有正在上传的文件。

于 2014-12-05T19:58:45.643 回答