使用AJAX调用在javascript中下载文件

阿米尔

这是我的Java脚本代码,用于在按钮单击时从数据库下载文件,当按钮单击时此函数调用。使用ajax调用我已经移到处理程序。

function DownloadDocument() {
    var CurrentUserEmpId = CurrentSelectedUser;
    Ext.Ajax.request({
        url: "UploadAttachment.ashx?mode=DownloadDocument&EmployeeId=" + CurrentUserEmpId,
        success: function (response) {
            var data = response.responseText;
        },
        failure: function (form, action) {
        }
    });
}

处理程序页面到了,我已经将文件的字节保存byte [] buffer这里的问题是下载无法正常工作。由于Iam是初学者,所以我无法弄清楚问题所在。请对此提供帮助,谢谢。

case "DownloadDocument":

            WebClient web = new WebClient();
            try
            {
                byte[] buffer;

                var query2 = @"select LLD_Decleration_doc from (select  instance, Employee_id, lld_Decleration_doc, ROW_NUMBER() OVER(PARTITION BY Employee_id ORDER BY Update_Date DESC) Latest from [EManager].[dbo].[tax_benefit_declaration]) a where latest = 1 And Employee_id = @EmployeeId";

                using (SqlConnection con = new SqlConnection(db.ConnectionString))
                using (SqlCommand cmd = new SqlCommand(query2, con))
                {
                    SqlParameter param = cmd.Parameters.Add("@EmployeeId", SqlDbType.Int);
                    param.Value = EmployeeId;
                    con.Open();

                    buffer = (byte[])cmd.ExecuteScalar();
                    con.Close();
                }

                HttpResponse response = HttpContext.Current.Response;
                response.Clear();
                response.ClearContent();
                response.ClearHeaders();
                response.Buffer = true;
                response.ContentType = "APPLICATION/OCTET-STREAM";
                String Header = "Attachment; Filename=NewFile";
                response.AppendHeader("Content-Disposition", Header);
                context.Response.BinaryWrite(buffer);
                response.End();
            }
            catch { }
            break;
    }
PawełGłowacz

这是很多次说过的话。您不能通过Ajax调用来做到这一点。

您可以通过调用隐藏来实现这一点iframe,例如:

                var body = Ext.getBody();
                var comp = body.getById('hiddenform-iframe-download');
                if (!Ext.isEmpty(comp)) {
                    comp.remove();
                }
                body.createChild({
                    tag: 'iframe',
                    cls: 'x-hidden',
                    id: 'hiddenform-iframe-download',
                    name: 'iframe',
                    src: "yourContextToDownload?param1="+something
                });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用JavaScript在Safari中下载文件

来自分类Dev

使用UpdatePanel从流中下载文件

来自分类Dev

有没有办法可以在ajax调用的成功函数中下载文件?

来自分类Dev

使用Ajax调用MVC从数据库下载文件

来自分类Dev

在SPA中下载文件

来自分类Dev

在Mojolicious中下载文件

来自分类Dev

在DoFn中下载文件

来自分类Dev

在 r 中下载文件

来自分类Dev

如何使用Selenium在点击事件中下载文件?

来自分类Dev

使用外部资源的URL在Laravel中下载文件

来自分类常见问题

使用Response :: download在laravel中下载文件

来自分类Dev

使用多线程在Java中下载文件

来自分类Dev

如何使用phpstorm在ftp中下载文件

来自分类Dev

使用多线程在Java中下载文件

来自分类Dev

如何使用Liferay在portlet中下载文件或InpuStream?

来自分类Dev

使用JavaRx / rx-mongodb在Grails中下载文件

来自分类Dev

无法使用FileTransfer在Cordova和Ionic中下载文件

来自分类Dev

在Struts 2中下载文件

来自分类Dev

如何在Watir中下载文件?

来自分类Dev

如何在webView中下载文件?

来自分类Dev

无法在UpdatePanel中下载文件

来自分类Dev

如何在Codeigniter中下载文件?

来自分类Dev

在Android Webview中下载文件

来自分类Dev

避免在Python Urlopen中下载文件

来自分类Dev

从Jupyter Notebook在Voila中下载文件

来自分类Dev

从项目中下载文件

来自分类Dev

在Windows应用商店中下载文件

来自分类Dev

自动在Ruby中下载文件

来自分类Dev

在Struts 2中下载文件