【问题标题】:Jquery File Upload : Database call after successful images uploadJquery File Upload:成功上传图片后调用数据库
【发布时间】:2017-08-17 03:41:55
【问题描述】:

我正在使用 jQuery 文件上传来通过 MVC 和 Web API 上传文件。使用默认行为 singleFileUploads = true (默认情况下,选择的每个文件都使用单独的 /请求 XHR 类型上传)。

一旦上传到服务器的所有图像完成,我正在尝试在最终数据库插入调用中保存图像总数和一些其他数据。 另一个问题是Web服务器无法访问文件服务器,只有应用服务器可以从文件服务器保存和读取图像。

我已经知道类似的问题,但两者都有不同的环境和问题。 running SQL after successful upload with jQuery-File-Upload

这里是代码:我尝试使用完成、完成和完成的所有回调函数 完成,但每个函数在每次文件上传后都会被调用。当所有文件上传完成后,我只尝试调用 SaveDataDB() 一次。

$(function () {

    $form = $('#fileupload').fileupload({
        dataType: 'json',
        singleFileUploads: true,
        sequentialUploads:false,
        url: "/FileUpload/Upload",
        add: function (e, data) {
            $("#btnStart").on("click", function () {
                data.submit();
            })
        },
        completed: function (e, data) {
            $.ajax({
                url: "/FileUpload/SaveDataDB",
                type: "POST",
                dataType: "json"
            });
        },
    }).bind('fileuploadcompleted', function (e, data) { alert("Message", "Title"); })
      .bind('fileuploadfinished', function (e, data) { alert("fileuploadfinished", "Title") })
      **.bind('fileuploadstop', function (e, data) {
            $.ajax({
                url: "/FileUpload/SaveDataDB",
                type: "POST",
                dataType: "json",
                data: TotalFiles,
                success: function (data) {
                };**

});

MVC 控制器

 [HttpPost]
    public JsonResult Upload()
    {
        var resultList = new List<ViewDataUploadFilesResult>();

        var CurrentContext = HttpContext;

        filesHelper.UploadAndShowResults(CurrentContext, resultList);
        JsonFiles files = new JsonFiles(resultList);
        bool isEmpty = !resultList.Any();
        if (isEmpty)
        {
            return Json("Error ");
        }
        else
        {
            return Json(files);
        }
    }

    [HttpPost]
    public JsonResult SaveDataDB()
    {
        return Json(new { status = "Success", message = "Success" });
    }

【问题讨论】:

  • 为什么不上传成功时调用它,所以在你的mvc中的Upload()函数中,在成功保存时调用SaveDataDB()
  • 每个文件上传请求都会多次调用成功函数。
  • 每次提交表单只会上传一个文件,对吗?
  • 不可以上传多张图片,但每个文件使用单个请求上传

标签: jquery asp.net-mvc jquery-file-upload blueimp


【解决方案1】:

你好,不要做两个不同的动作,而是尝试将它们合并为一个

[HttpPost]
    public JsonResult Upload()
    {
        var resultList = new List<ViewDataUploadFilesResult>();

    var CurrentContext = HttpContext;

    filesHelper.UploadAndShowResults(CurrentContext, resultList);
    JsonFiles files = new JsonFiles(resultList);
    bool isEmpty = !resultList.Any();
    if (isEmpty)
    {
        return Json("Error ");
    }
    else
    {
        //Put the SaveToDb Code here 
        return Json(new{files=files,success="success",message ="success");
    }
} 

【讨论】:

  • 同样的问题,每次上传文件都需要调用。
  • 解决了,绑定事件fileuploadstop。文件上传完成后调用此事件。我已编辑问题以添加此代码。
猜你喜欢
  • 2018-06-02
  • 2016-06-12
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多