【发布时间】:2014-03-24 14:18:49
【问题描述】:
我一直在到处寻找这个问题的答案,但没有运气。
我想要一个可以打开“另存为”对话框的按钮或链接。简单吗?
我知道我可以在新窗口/选项卡中打开图像(就像我现在所做的那样),然后使用 right-click, save as 方法,但因为使用它的人不是盒子里最锋利的刀,所以我想要使下载尽可能简单。
此刻的代码是:
<button class="downloadButton" type="submit" onClick="window.open('<%=(rsContent.Fields.Item("ContentImage").Value)%>')">Download Image</button>
但这会将图像加载到新窗口/新标签中。
为了记录,用户使用的是带有 Internet Explorer 8 的 Windows XP,所以我们不能使用download HTML5 事件。
我不介意它是 JavaScript、JQuery 还是经典的 ASP。
提前感谢您的帮助。
铅
更新
使用发布的 MDN 代码 Lankymart,我按原样尝试,它工作(用于打开/下载 Excel 文档),但是,我尝试更改部件以下载图像,但它没有工作。
这是经典的 ASP 代码:
<%
Dim rsImage__imageID
rsImage__imageID = "1"
If (Request.QueryString("imageID") <> "") Then
rsImage__imageID = Request.QueryString("imageID")
End If
%>
<%
Dim rsImage
Dim rsImage_cmd
Dim rsImage_numRows
Set rsImage_cmd = Server.CreateObject ("ADODB.Command")
rsImage_cmd.ActiveConnection = MM_ENG_STRING
rsImage_cmd.CommandText = "SELECT ContentID, ContentImage, DisplayImage FROM tblContent WHERE ContentImage = ?"
rsImage_cmd.Prepared = true
rsImage_cmd.Parameters.Append rsImage_cmd.CreateParameter("param1", 5, 1, -1, rsImage__imageID) ' adDouble
Set rsImage = rsImage_cmd.Execute
rsImage_numRows = 0
%>
以及(严重)更改的 MDN 代码:
<%
'Set the content type to the specific type that you are sending.
Response.ContentType = "image/JPEG"
Const adTypeBinary = 1
Dim strImageFile
strImageFile = (rsImage.Fields.Item("ContentImage").Value) 'This is the path and name of the file on disk.
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strImageFile
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
%>
我称之为:
<button class="downloadButton" type="submit" onClick="window.location.href='image-download.asp?imageID=<%=(rsContent.Fields.Item("ContentID").Value)%>';">Download Image</button>
它产生的错误是:
The image “http://localhost:85/admin/english/image-download.…p?imageID=5” cannot be displayed because it contains errors.
页面代码为:
<html>
<head>
<meta name="viewport" content="width=device-width; height=device-height;"></meta>
<link rel="stylesheet" href="resource://gre/res/ImageDocument.css"></link>
<link rel="stylesheet" href="resource://gre/res/TopLevelImageDocument.css"></link>
<link rel="stylesheet" href="chrome://global/skin/media/TopLevelImageDocument.css"></link>
<title>
image-download.asp (JPEG Image)
</title>
</head>
<body>
<img src="http://localhost:85/admin/english/image-download.asp?imageID=5" alt="The image “http://localhost:85/admin/english/image-download.…p?imageID=5” cannot be displayed because it contains errors." title=""></img>
</body>
</html>
【问题讨论】:
-
不能标记为重复 - JavaScript: Prompting user to save file using a 'Save-as' dialog? 但你应该看看这个问题。
-
自从我发表评论以来,我已经添加了一个答案,因为您可能无法使用 javascript 来做到这一点,但您可以使用图像处理页面来“伪造”它。
-
现在你已经展示了你已经尝试过的代码,你得到了什么错误?你能把它也包括进去吗?
-
更新问题并输出错误。
-
从您非常一般的错误来看,您的代码在哪里失败并不清楚
cannot be displayed because it contains errors不会帮助您调试问题。您是否有在 IIS 中处理500.100 Internal Server Errors的500-100.asp设置?没有它,您收到的任何错误都不会有意义。
标签: javascript jquery html asp-classic