我使用下面的代碼將圖像存儲在我的web服務器:無法從PHP
function SavePic()
{
$allowedExts = array("jpeg", "jpg");
$temp = explode(".", $_FILES["UserPic"]["name"]);
$extension = end($temp);
if ((($_FILES["UserPic"]["type"] == "image/jpeg")
|| ($_FILES["UserPic"]["type"] == "image/jpg"))
//&& ($_FILES["UserPic"]["size"] < 2097152)
&& in_array($extension, $allowedExts))
{
if ($_FILES["UserPic"]["error"] > 0)
{
echo json_encode("Error: ".$_FILES["UserPic"]["error"]);
}
else
{
$folder = "/home5/username/public_html/Project/Users/Images/";
echo move_uploaded_file($_FILES["UserPic"]["tmp_name"],$folder.$_REQUEST["email"].".".$extension);
}
}
else
{
echo json_encode("Invalid file");
}
}
而下面的代碼來獲取圖像:如果我的電子郵件是
function RetrievePic()
{
$handle = fopen('php://input','r');
$jsonInput = fgets($handle);
// Decoding JSON into an Array
$retrieveParameters = json_decode($jsonInput,true);
$UserPic = array("UserPic" => "http://www.mysite.com/Project/Users/Images/".$retrieveParameters['email']."."."jpg");
echo json_encode($UserPic);
}
對於實例ABC @ xyz.com然後圖像將被存儲爲「[email protected]」。問題是,當我嘗試覆蓋圖像以替換舊圖像時,服務器每次都會返回舊圖像。
更新: 當我把網址在瀏覽器e.g http://www.mysite.com/Project/Users/Images/[email protected] 最新的圖像顯示之後,我開始接受最新的圖像。
您可能會在Web服務器是如何緩存數據想看看,你總是可以添加一個時間戳到URL(也許文件修改時間?)'http://www.mysite.com/Project/Users/Images/[email protected]?modifiedtime' – hank
就像@hank剛纔寫的:試試'$ UserPic = array(「UserPic」=>「http://www.mysite.com/Project/Users/Images/".$retrieveParameters['email']。」。 「。」jpg?「。time());' –
@MarcinKrawiec使用'time()'每次都會強制重載,這是浪費帶寬,最好使用文件的實際修改時間。 – hank