我正在嘗試使用處理程序來提供我的Web目錄之外的文件,並且出現了一些問題。我想在處理程序中執行檢查,並且需要能夠運行查詢,但只要我添加一行代碼而不是顯示的代碼,就會得到錯誤圖像「http:// localhost/xampp/site_name/image_handler.php?ID = d5xa24tdufoseg868r66yjz5sr19u41i「無法顯示,因爲它包含錯誤。在Firefox中我檢查了螢火蟲控制檯,它說圖像損壞或截斷。但是,如果我離開基本代碼,我已經顯示它只是服務於圖像。任何人都知道爲什麼會這樣?網絡目錄之外的文件已損壞或被截斷
編輯:顯示所有代碼
<?php
include("roc/include/connection.php");
$db = new PDOConnectionFactory();
$conn = $db->getConnection();
//prepare for utf8 characters
$sql = 'SET NAMES utf8';
$stmt = $conn->prepare($sql);
$result=$stmt->execute();
$sql = 'SET CHARACTER SET utf8';
$stmt = $conn->prepare($sql);
$result=$stmt->execute();
//**************************
if (! preg_match("/^[[email protected],'s]*$/i",$_GET['ID']))
{
die('No illegal characters');
}
else
$empty=strlen($_GET['ID']);
if ($empty==0)
{
die('The text field cannot be empty');
}
else
{
$ID = $_GET['ID'];
if (strlen($_GET['ID'])>35){
exit("error");
}
}
$sql="SELECT file_name FROM video WHERE vid_id=?";
$stmt=$conn->prepare($sql);
$result=$stmt->execute(array($ID));
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$file_name = $row['file_name']."[img-004].jpg";
}
echo $path="/home/g/Desktop/processed/".$file_name."";
//check if image is readible and type
if (is_readable($path)) {
header('Content-Length: '.filesize($path)); // provide file size
header("Expires: -1");
header('Content-Type: image/jpeg');
$content=file_get_contents('/home/g/Desktop/processed/986861d331e8b4b4eacee5cb7aed494a[img-004].jpg');
}
else {
error_log("Can't serve image: $file_name");
}
?>
HTML輸出
<img src="http://localhost/xampp/site_name/image_handler.php?ID=d5xa24tdufoseg868r66yjz5sr19u41i" alt="The image 「http://localhost/xampp/site_name/image_handler.php?ID=d5xa24tdufoseg868r66yjz5sr19u41i」 cannot be displayed because it contains errors.">
所以...你說的是,正確的代碼正常工作,錯誤的代碼工作是錯誤的? – 2011-06-13 05:31:33
沒有我說的這段代碼可以工作,但我需要檢查friggin。我需要能夠運行查詢並擁有比這個好友更多的代碼。這個腳本沒用。來吧... – Scarface 2011-06-13 05:32:47
這段代碼很好。問題在於其餘部分。 – 2011-06-13 05:42:06