У меня есть очень маленький php-скрипт, который делает именно то, что мне нужно — однако мне нужно конвертировать его в классический ASP. Я гуглил, но не смог найти информацию о чем-то похожем на «fopen» или «fwrite» в классическом ASP.
Мой оригинальный скрипт 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, который возвращает GIF. Я сохраняю gif на своем локальном сервере, и cron-job запускает скрипт так часто, чтобы поддерживать gif в актуальном состоянии.
Я перехожу на сервер IIS, который делает не есть php, так что классического 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-файл, который будет возвращен на сервере, — тогда я настрою запланированные задачи, чтобы запустить его с интервалом.
Любая помощь приветствуется.
xmlhttp
(экземпляр IServerXMLHTTPRequest) имеет метод responseBody который возвращает массив байтов, используйте его вместо 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 на IIS не так уж и сложна, это может быть для вас лучшим вариантом, чем переписывать все в 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">