如何在 Classic ASP 中保存 .gif - 从 PHP 脚本转换 - fopen、fwrite 的选项

How to save a .gif in Classic ASP - converting from PHP script - options for fopen, fwrite

我有这个非常小的 php 脚本,它完全可以满足我的需要 - 但是我需要将它转换为经典 ASP。我已经用谷歌搜索了,但无法在经典 ASP.

中找到任何类似于 'fopen' 或 'fwrite' 的信息

我原来的PHP脚本是:

<?php
$responseImg = file_get_contents("http://url.to/the/api/thatreturnsagif");
$fp = fopen("/my/server/public_html/mydirectory/samepicture.gif", "w");
fwrite($fp, $responseImg);
fclose($fp);
?>

真的很短,真的很简单,而且正是我需要的。它调用 API 那个 returns 一个 gif。我将 gif 保存在我的本地服务器上,并经常使用 cron-job 运行s 脚本以使 gif 保持最新。

我正在移动到 没有 php 的 IIS 服务器,因此经典 ASP 就足够了。

我已经走到这一步了:

<% 
url = "http://url.to/the/api/thatreturnsagif"
set xmlhttp = server.CreateObject("Msxml2.ServerXMLHTTP.6.0") 
xmlhttp.open "GET", url, false 
xmlhttp.send "" 
Response.write xmlhttp.responseText 
set xmlhttp = nothing 
%>

我能够从网上的其他一些东西中把它放在一起。

我只需要弄清楚如何保存将在服务器上返回的 gif - 然后我将设置计划任务 运行 它每隔一段时间。

感谢任何帮助。

已编辑

首先,在 IIS 上安装 PHP 并不难,与在 Classic ASP

中重写所有内容相比,这对您来说可能是更好的选择

定义 Response.ContentType 很重要。除此之外,我以前从未用图像文件尝试过,所以我在这里猜测了一下

已编辑 - 我已经试过了并且有效。将下面的代码另存为一个单独的文件 - 给它起一个像 mygif.asp

这样的名字
<% url = "http://url.to/the/api/thatreturnsagif"       
Set mygif = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0")
    mygif.open "GET",url, false
    mygif.send 
    Response.ContentType = "image/gif" 
    Response.binarywrite mygif.ResponseBody

set mygif=nothing %>

然后您可以像嵌入平面图像一样使用 img 标签嵌入它。

<img src="mygif.asp">

xmlhttp(IServerXMLHTTPRequest 的实例)有一个方法responseBody,即returns 字节数组,使用它代替responseText。 然后写入流并保存为文件。

url = "http://url.to/the/api/thatreturnsagif"
set xmlhttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0") 
xmlhttp.open "GET", url, false 
xmlhttp.send
With Server.CreateObject("Adodb.Stream")
    .Type = 1 '1 for binary stream
    .Open
    .Write xmlhttp.responseBody
    .SaveToFile Server.Mappath("\mydirectory\samepicture.gif"), 2 ' 2 for overwrite
    .Close
End With
set xmlhttp = nothing