如何在 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
我有这个非常小的 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