下载asp.net后点击javascript函数

时间:2016-02-24 10:28:44

标签: javascript c# asp.net .net

我在代码后面有一个方法,可以将文件从服务器下载到客户端。之后我想运行一个javascript函数。但它不起作用。仅当javascript函数位于按钮单击事件中时才有效。

string imageFilePath = Server.MapPath("~/TireLabel.png");
        Bitmap bitmap = (Bitmap)Image.FromFile(imageFilePath);//load the image file

        Graphics g = Graphics.FromImage(bitmap);
        string text = "215/45 R 20";
        g.DrawString(text, drawFontArial26Bold, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);

        text = "013";
        g.DrawString(text, drawFontArial20Regular, drawBrush, new RectangleF(70, 45, 0, 0), drawFormatRight);

        text = "1";
        g.DrawString(text, drawFontArial20Regular, drawBrush, new RectangleF(100F, 80, 0, 0), drawFormatRight);

        text = "2";
        g.DrawString(text, drawFontArial20Regular, drawBrush, new RectangleF(240, 80, 0, 0), drawFormatRight);

        Bitmap bit = new Bitmap(bitmap);
        bit.Save(Server.MapPath("~/TireLabel.bmp"), System.Drawing.Imaging.ImageFormat.Bmp);

        Response.ContentType = "application/jpeg";
        Response.AddHeader("content-disposition", "attachment; filename=" + Server.MapPath("~/TireLabel") + ".bmp");
        Response.WriteFile(Server.MapPath("~/TireLabel.bmp" + ""));

        ClientScript.RegisterStartupScript(GetType(), "key", "runPrint();", true); // THIS does not fire.

//Javascript function
function runPrint() {
        var objShell = new ActiveXObject("WScript.Shell");
        var strCommand = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe";
        //var strCommand = "C:\\PrintLabel.exe";
        objShell.Exec(strCommand);
        //objShell.ShellExecute(strCommand, "","","open","1");
    }

如何让javascript开火。

1 个答案:

答案 0 :(得分:1)

这是一个难题,因为浏览器通常不会在下载完成时告诉您。看看允许您通过AJAX下载文件的jQuery.filedownload

- 编辑 -

以下是将jQuery filedownload附加到“fileDownload”类的所有链接的代码:

 $(document).on('click', 'a.fileDownload', function() {        

   $.fileDownload($(this).prop('href'))
            .done(function () { alert('File download a success!'); })
            .fail(function () { alert('File download failed!'); });

        return false; //this is critical to stop the click event which will trigger a normal file download
});

这假定控制器操作的URL在链接的href属性中给出,此操作返回带有return File()的文件。 响应还必须包含cookie /fileDownload,以通知jquery.fileDownload成功下载文件。

//jquery.fileDownload uses this cookie to determine that a file download has completed successfully
response.AppendCookie(new HttpCookie("fileDownload", "true") {
    Path = "/"
});

- 编辑2 - 更改了源以显示更少的dependendies更简单的示例。使用.done承诺在下载完成后触发操作