В настоящее время веб-редакторы HTML все более широко используются в системах новостей и статей. Исходный стиль можно сохранить после вставки сети, а также сохранить в ней изображения. Однако во время использования, если вставленную картинку удалить, на лице останется большой «Х», что влияет на внешний вид. Раньше мне приходилось сохранять это изображение, а затем снова загружать его на сервер, что было очень хлопотно. Может ли сервер автоматически загрузить изображение, сохранить его на сервере и заменить ссылку на странице? Ответ: да.
Для реализации этой функции необходимы три шага:
1. Получите адрес исходной картинки. Существует много методов: вы можете использовать разбиение строк или использовать обычное сопоставление. Практика доказала, что регулярное сопоставление является самым простым. Адреса анализируемых изображений сохраняются в теге <img>. Мы можем сначала получить все эти теги. Процесс выглядит следующим образом:
Set objRegExp = Новый объект конфигурации набора регулярных выражений
objRegExp.IgnoreCase = True'Игнорировать регистр
objRegExp.Global = True' настроен на полнотекстовый поиск.
objRegExp.Pattern = "<img.+?>"'Чтобы гарантировать точность получения адреса изображения, он разделен на два уровня конфигурации: сначала найдите тег <img> внутри, а затем получите адрес изображения. внутри реализована функция getimgs.
стрс = обрезка (стр)
Set Matches =objRegExp.Execute(strs)'Начать выполнение конфигурации
За каждый матч в матчах
RetStr = RetStr &getimgs( Match.Value )'Выполните второй раунд сопоставления
Все изображения в
Next
имеют src="http://адрес изображения", поэтому вы можете получить точный адрес изображения следующим образом:
функция getimgs(str)
получитьимгс=""
Установить objRegExp = Новое регулярное выражение
objRegExp.IgnoreCase = Истина
objRegExp.Global = Истина
objRegExp.Pattern = " http://.+?"""' Вынимаем адрес внутри
set mm=objRegExp.Execute(str)
Для каждой спички в мм
getimgs=getimgs&"||"&left(Match.Value,len(Match.Value)-)' строковые адреса внутри для дальнейшего использования
следующий
Функция end
получила адреса всех картинок, и мы можем переходить ко второму шагу.
Во-вторых, загрузите изображение и сохраните его на сервере. Это можно разделить на два этапа: один — получить содержимое изображения, а другой — сохранить его на сервере. Получение содержимого изображения достигается с помощью следующей функции:
функция getHTTPage (url)
при ошибке продолжить дальше
тусклый http
set http=server.createobject("MSXML.XMLHTTP")'Используйте метод xmlhttp, чтобы получить содержимое изображения
Http.open "GET", URL, false
HTTP.send()
если Http.readystate<> тогда
функция выхода
конец, если
getHTTPPage=Http.responseBody
установить http=ничего
если err.number<>0, то err.Clear
конечная функция
После получения содержимого изображения нам необходимо его сохранить. У людей создается впечатление, что это можно сделать с помощью FSO, но на самом деле это невозможно. Таким образом, программа сохранения выдаст ошибку, поскольку FSO не поддерживает потоковую передачу. файлы, поэтому нам нужно вызвать другой объект: ADO.STREM. Конкретный процесс заключается в следующем:
функция saveimage(from,tofile)
тусклый geturl, objStream, imgs
geturl=обрезать(из)
imgs=gethttppage(geturl)'Процесс получения конкретного содержимого изображения
Set objStream = Server.CreateObject("ADODB.Stream")' Чтобы создать объект ADODB.Stream, вам потребуется ADO или выше.
objStream.Type ='Открыть в двоичном режиме
objStream.Open
objstream.write imgs' записывает содержимое строки в буфер.
objstream.SaveToFile server.mappath(tofile),' — запись буферизованного содержимого в файл.
objstream.Close()'Закрыть объект
установить objstream=ничего
конечная функция
Поэтому просто используйте цикл для сохранения всех изображений по только что полученному адресу. Конкретный процесс выглядит следующим образом:
arrimg=split(retstr,"||")'Разделить строку и получить внутри нее список адресов
аллимг=""
новыйимг=""
для i = до ubound (arrimg)
if arrimg(i)<>"" и instr(allimg,arrimg(i))< then' Проверьте, загружено ли это изображение
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
saveimage(arrimg(i),fname)' для сохранения адреса, см. процесс выше
allimg=allimg&"||"&arrimg(i)' Объедините адреса сохраненных изображений вместе, чтобы определить адрес, который необходимо заменить.
newimg=newimg&"||"&fname' снова собрать локальный адрес
конец, если
следующий
Третий шаг — заменить исходный адрес. Конкретный процесс заключается в следующем:
arrnew=split(newimg,"||")'Получить список адресов исходного изображения
arrall=split(allimg,"||")'Получить список адресов сохраненных изображений
for i= to ubound(arrnew)' выполняет цикл для замены исходного адреса
strs=replace(strs,arrall(i),arrnew(i))
следующий
CCTV = строки
При этом основной процесс этой функции выглядит следующим образом. Конечно, его можно изменить, чтобы получить больше функций, таких как: добавление ограничений на размер изображения и добавление ограничений на загрузку изображений на локальном компьютере, чтобы избежать дублирования. . В то же время следует также отметить, что недостатком этой функции является то, что она может обрабатывать только статические файлы изображений и не может использоваться для изображений, сгенерированных программой.