gpt4 book ai didi

delphi - 如何让wininet只下载gif图片

转载 作者:可可西里 更新时间:2023-11-01 16:48:36 24 4
gpt4 key购买 nike

我正在使用 Wininet 下载图像并将它们保存到内存流,但出于更多管理原因,我只想允许 gif 图像jpg 要下载,我尝试添加对 FURL 的检查,但从 url 中提取文件扩展名对我来说是错误的步骤这里是我的 wininet 函数

function DownloadToStream: Boolean;
var
hSession : HINTERNET;
hService : HINTERNET;
lpBuffer : array[0..1023] of Byte;
dwBytesRead : DWORD;
dwBytesAvail : DWORD;
dwTimeOut : DWORD;
Sessionname : String;
Setsession : Pwidechar;
begin
Result := False;
Sessionname := nameofsession;
Setsession := pwidechar(Sessionname);
hSession := InternetOpen(Setsession, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if not Assigned(hSession) then Exit;
try
hService := InternetOpenUrl(hSession, PChar(FUrl), nil, 0, 0, 0);
if hService = nil then
Exit;
try
dwTimeOut := 60000;
InternetSetOption(hService, INTERNET_OPTION_RECEIVE_TIMEOUT, @dwTimeOut, SizeOf(dwTimeOut));
if InternetQueryDataAvailable(hService, dwBytesAvail, 0, 0) then
repeat
if not InternetReadFile(hService, @lpBuffer[0], SizeOf(lpBuffer), dwBytesRead) then
Break;
if dwBytesRead <> 0 then
FMs.WriteBuffer(lpBuffer[0], dwBytesRead);
until dwBytesRead = 0;
Result := FMS.Size > 0;
finally
InternetCloseHandle(hService);
end;
finally
InternetCloseHandle(hSession);
end;
end;

最佳答案

您可以发送 HTTP HEAD 请求并查看内容类型 response header .如果它是 image/gif 那么可以安全地假设该资源是一个 gif 图像。当然,这需要正确配置的 HTTP 服务器。

作为 (Delphi) 的起点,请参阅:https://stackoverflow.com/a/9166393/80901

关于delphi - 如何让wininet只下载gif图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32261030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com