当前位置: 首页 > 面试题库 >

如何在ASP.NET MVC中执行图像的Ajax / JQuery上传?

孟思远
2023-03-14
问题内容

我有一个用ASP.NET
MVC编写的网站。我有一个页面,用户可以在其中创建小文章。他们可以在本文中选择图片。我有一个页面,他们可以在其中上传图片,在“创建文章”页面上,只需列出它们即可。但是许多人抱怨他们在意识到自己没有上传所需图像之前写了整篇文章。我想要的是用户能够从“创建文章”页面上载图片,然后重新加载我的可能图片下拉菜单供您选择。

我正在考虑在页面上制作一个单独的多部分表单,然后让用户在那里选择文件(基本上使用我现有的上传功能)。但是我该如何绕过异步提交呢?以及如何重新渲染异步图像列表?

如何使用jquery / ajax上传此图像,然后重新填充我的下拉菜单?

/干杯


问题答案:

我已经使用了这个jQuery插件几次。
我将上传按钮放在使用 PopupImageUploader* 元素的jQuery
UI模态对话框
中。
*

<div id="PopupImageUploader" title="Upload Image">
    <div id="uploaderFile"></div>
</div>

和我的javascript构建 upladerFile 元素上的上载

function CreateImageUploader() {
    var uploader = new qq.FileUploader({
        element: $('#uploaderFile')[0],
        template: '<div class="qq-uploader">' +
                              '<div class="qq-upload-drop-area"><span>Drop files here to upload</span></div>' +
                              '<div class="qq-upload-button ui-button ui-widget ui-corner-all ui-button-text-only ui-state-default">Seleziona il Listino Excel</div>' +
                              '<ul class="qq-upload-list"></ul>' +
                              '</div>',
        hoverClass: 'ui-state-hover',
        focusClass: 'ui-state-focus',
        action: 'Home/UploadImage',
        allowedExtensions: ['jpg', 'gif'],
        params: { },
        onSubmit: function(file, ext) {

            },
        onComplete: function(id, fileName, responseJSON) {
            $("#PopupImageUploader").dialog('close');
            }
        }
    });
}

您可以使用 onComplete 事件来检查上传结果,并最终更新您的下拉列表。您的 UploadImage 动作可以接收在params: { }属性中指定的额外参数。这是我的控制器:

    [HttpPost()]
    public System.String UploadImage(string id)
    {

        bool IsIE = false;
        string sFileName = "";
        var TempFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "_TEMP");

        if ((Request.Files == null) || (Request.Files.Count == 0))
        {
            if (string.IsNullOrEmpty(Request.Params["qqfile"]))
            {
                return ("{success:false, error:'request file is empty'}");
            }
            else
            {
                sFileName = Request.Params["qqfile"].ToString();
            }
        }
        else
        {
            sFileName = Request.Files[0].FileName;
            IsIE = true;
        }

        if (string.IsNullOrEmpty(sFileName))
        {
            return ("{success:false, error:'request file is empty'}");
        }

        string DocumentName = id + Path.GetExtension(sFileName);

        if (IsIE)
        {
            try
            {
                Request.Files[0].SaveAs(Path.Combine(TempFolder, DocumentName));
            }
            catch (Exception ex)
            {
                return ("{success:false, error:'" + ex.Message + "'}");
            }
        }
        else
        {
            try
            {
                if ((Request.InputStream != null) && (Request.InputStream.CanRead) && (Request.InputStream.Length > 0))
                {
                    using (FileStream fileStream = new FileStream(Path.Combine(TempFolder, DocumentName), FileMode.Create))
                    {
                        byte[] FileBytes = new byte[Convert.ToInt32(Request.InputStream.Length) + 1];
                        Int32 bytesRead = 0;
                        bytesRead = Request.InputStream.Read(FileBytes, 0, FileBytes.Length);
                        fileStream.Write(FileBytes, 0, bytesRead);
                        fileStream.Flush();
                        fileStream.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                return ("{success:false, error:'" + ex.Message + "'}");
            }
        }

        var newFileName = "new assigned filename";

        return ("{success:true, newfilename: '" + newFileName + "'}");

    }

IE具有不同的行为,因此我有两个不同的过程来读取文件。



 类似资料:
  • 我试图通过AJAX Laravel(jquery AJAX)发送图像上传。我总是收到空的$_files数组。我在Form中添加了enctype=“multipart/form-data。当我通过Laravel的post方法发送数据时,我得到了我的数据。这不适用于jquery ajax。我得到的是除了$_文件之外我发送的其他东西的ajax响应。

  • 问题内容: 我正在尝试使用jQuery和Ajax函数上传图像,以及如何获取图像文件的所有详细信息,例如我们使用的php 这是我的代码 JS 控制者 视图 响应 C:\ fakepath \ Koala.jpg您没有选择要上传的文件。 请帮忙 问题答案: 您可以在html5中使用FormData API。 您的表格必须是: 然后jQuery: 然后,在控制器中,您将获得数组中的文件。

  • 问题内容: 我有一个包含3个输入的表单: [1]用于状态更新的文本输入字段 [2]文件上传(用于图片) [3]文本输入字段,用于附加链接 用户根据自己想做什么在每个选项之间切换。例如,当选择[2]时,输入[1]和[3]被隐藏。 所有这些输入都包含在ID为的单个表单中。选项[1]和[3]通过Ajax发布到不同的控制器。 现在我的问题是选项[2],因为不可能使用jQuery ajax上传图像。 我见过

  • 问题内容: 我正在开发php / javascript聊天。 用户登录时,其用户名将插入名为的MySQL表中。此插入返回将存储在称为 当用户关闭页面时,我需要删除MySQL表行。 我尝试了以下方法,但没有成功: js文件 chat.php 有什么办法吗? 问题答案: 您触发ajax异步(jQuery的默认设置-ajax)。但是浏览器不会等待任何卸载。 尝试在ajax 设置中进行设置。但是,您永远无

  • 问题内容: 我正在开发php / javascript聊天。 用户登录时,其用户名将插入名为的MySQL表中。此插入返回将存储在称为 当用户关闭页面时,我需要删除MySQL表行。 我尝试了以下方法,但没有成功: js文件 chat.php 有什么办法吗? 问题答案: 您触发ajax异步(jQuery的默认设置-ajax)。但是浏览器不会等待任何卸载。 尝试在ajax 设置中进行设置。但是,您永远无

  • 问题内容: 我只是想知道如何显示指示异步请求正在运行的图像。我使用以下代码执行异步请求: 有任何想法吗? 问题答案: 当然,您可以在发出请求之前显示它,并在请求完成后隐藏它: 我通常更喜欢将其绑定到全局ajaxStart和ajaxStop事件的更通用的解决方案,这样它就可以显示在所有ajax事件中: