尝试将文件上传到服务器

时间:2019-11-02 10:07:57

标签: c# asp.net-mvc

我尝试使用ASP.NET MVC将一些文件上传到服务器。

我在索引中写的JS代码:

@section Scripts{
<script src="~/Scripts/jquery.filedrop.js"></script>
<script type="text/javascript">
    $(function () {
        $('#dropArea').filedrop({
            url: '@Url.Action("UploadFiles")',
            allowedfiletypes: ['image/jpeg', 'image/png', 'image/gif'],
            allowedfileextensions: ['.jpg', '.jpeg', '.png', '.gif'],
            paramname: 'files',
            maxfiles: 5,
            maxfilesize: 5, 
            dragOver: function () {
                $('#dropArea').addClass('active-drop');
            },
            dragLeave: function () {
                $('#dropArea').removeClass('active-drop');
            },
            drop: function () {
                $('#dropArea').removeClass('active-drop');
            },
            afterAll: function (e) {
                $('#dropArea').html('file(s) uploaded successfully');
            },
            uploadFinished: function (i, file, response, time) {
                $('#uploadList').append('<li class="list-group-item">' + file.name + '</li>');
            }
        })
    })
</script>
}

我的控制器的方法是:

[HttpPost]
public ActionResult UploadFiles(IEnumerable<HttpPostedFileBase> files)
{
        foreach (var file in files)
        {
            string filePath = Guid.NewGuid() + Path.GetExtension(file.FileName);
            file.SaveAs(Path.Combine(Server.MapPath("~/UploadedFiles"), filePath));               
        }

        return Json("file uploaded successfully");
}

当我尝试上传一些文件时,出现此错误:

enter image description here

请告诉我,从该代码开始,我应该在代码中添加些什么。

1 个答案:

答案 0 :(得分:0)

使用HttpPostedFileBase[]代替IEnumerable<HttpPostedFileBase>

[HttpPost]
public ActionResult UploadFiles(HttpPostedFileBase[] files)
{
    foreach (var file in files)
    {
        string filePath = Guid.NewGuid() + Path.GetExtension(file.FileName);
        file.SaveAs(Path.Combine(Server.MapPath("~/UploadedFiles"), filePath));
    }

    return Json("file uploaded successfully");
}