我有一个包含一堆图像的网页.有时图像不可用,因此在客户端的浏览器中显示损坏的图像.
如何使用jQuery获取图像集,将其过滤为损坏的图像然后替换src?
- 我认为使用jQuery更容易做到这一点,但结果却更容易使用纯粹的JavaScript解决方案,即Prestaul提供的解决方案.
我需要查看我的cdn上是否存在特定图像.
我尝试过以下内容并不起作用:
if (file_exists(http://www.example.com/images/$filename)) {
echo "The file exists";
} else {
echo "The file does not exist";
}
Run Code Online (Sandbox Code Playgroud)
即使图像存在或不存在,它总是说"文件存在".我不确定为什么它不起作用......
我正在为图书ISBN生成图像的动态网址.我需要一种可靠的PHP方法来检查图像是否实际存在于远程URL.我尝试了不同的PHP库,卷曲等各种方法,但没有一个很好用,其中一些非常慢.鉴于我需要为我的数据库中的每本书生成(并检查!)大约60个URL,这是一个巨大的等待时间.有线索吗?
if (!(file_exists(http://mysite.com/images/thumbnail_1286954822.jpg))) {
$filefound = '0';
}
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
我有一个简单的代码,可以对URL执行头请求,然后打印响应头.我注意到在某些网站上,这可能需要很长时间才能完成.
例如,请求http://www.arstechnica.com大约需要两分钟.我使用另一个执行相同基本任务的网站尝试了相同的请求,并立即返回.所以我必须设置错误导致这种延迟的东西.
这是我的代码:
$ch = curl_init();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt ($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
// Only calling the head
curl_setopt($ch, CURLOPT_HEADER, true); // header will be at output
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD'); // HTTP request is 'HEAD'
$content = curl_exec ($ch);
curl_close ($ch);
Run Code Online (Sandbox Code Playgroud)
以下是指向具有相同功能的网站的链接:http://www.seoconsultants.com/tools/headers.asp
上面的代码,至少在我的服务器上,需要两分钟才能检索到www.arstechnica.com,但上面链接中的服务会立即返回.
我错过了什么?
我有一些问题.
我需要检查网址是否为图片网址?我怎样才能做到这一点?
示例:如果我把http://www.google.com/放在不是图片网址.
但如果我把http://www.google.com/profiles/c/photos/private/AIbEiAIAAABECK386sLjh92M4AEiC3ZjYXJkX3Bob3RvKigyOTEzMmFmMDI5ODQ3MzQxNWQxY2VlYjYwYmE2ZTA4YzFhNDhlMjBmMAEFQ7chSa4PMFM0qw02kilNVE1Hpw或http://www.hoax-slayer.com/images/worlds-strongest-dog.jpg是为图像的URL.
我想打印文件列表,只打印来自FTP服务器的文件,这是我能完成的.
<?php
$ftp_server = "my ftp server";
$conn_id = ftp_connect($ftp_server);
$ftp_user_name = "ftp username";
$ftp_user_pass = "ftp password";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
$contents = ftp_nlist($conn_id, '/');
for ($i = 0 ; $i < count($contents) ; $i++)
echo "<li>" . substr($contents[$i],1) . "</li>";
ftp_close($conn_id);
?>
Run Code Online (Sandbox Code Playgroud)
但这会打印文件和文件夹的名称.我怎样才能打印文件名(文件可能没有扩展名!)
我猜PHP的get_headers不允许上下文,因此我必须更改默认流上下文以仅获取请求的HEAD.这会导致页面上的其他请求出现一些问题.我似乎无法弄清楚如何重置默认流上下文.我正在尝试这样的事情:
$default = stream_context_get_default(); //Get default stream context so we can reset it
stream_context_set_default( //Only fetch the HEAD
array(
'http' => array(
'method' => 'HEAD'
)
)
);
$headers = get_headers($url, 1); //Url can be whatever you want it to be
//var_dump($headers);
var_dump($default);
stream_context_set_default($default); //This doesn't work as it expects an array and not a resource pointer
Run Code Online (Sandbox Code Playgroud)
有谁知道解决这个问题?
我知道有人建议使用Curl,但我不愿意这个.谢谢!
php ×9
url ×4
image ×3
curl ×2
header ×2
http-headers ×2
broken-image ×1
file ×1
file-exists ×1
file-io ×1
ftp ×1
head ×1
html ×1
javascript ×1
jquery ×1
performance ×1
stream ×1