我試圖刪除圖像,通過一個AJAX函數將它們斷開連接,然後將它傳遞給encodeURIComponent。但是,我已經做了一些嘗試找出錯誤的嘮叨。Php unlink()返回包含空格的編碼文件路徑的錯誤
當我路過一個空間中有一個文件路徑(如... /檢驗/試驗item.jpg)
我得到的錯誤
PHP Warning: unlink(): Invalid argument in ...//file location
然而,當我通過文件路徑中沒有空格(例如../test/testitem.jpg),我沒有得到任何錯誤。爲什麼當我傳遞一個帶有空格的編碼文件路徑時,我得到一個無效的參數?我認爲通過編碼encodeURIComponent,文件路徑中的空格應該已被編碼和照顧?
我試着調用沒有編碼的函數,當文件路徑中包含空格時,我仍然只能得到無效的參數錯誤。如何處理文件路徑中的空格?
我的功能:
function DeleteImageDP(){
var itemid=$('#DisplayDeleteItemID').val();
var file=$('#DisplayDeleteFilePath').val();
var filepath=encodeURIComponent(file);
var itempicid=$('#DisplayDeleteItemPicID').val();
var cfm=confirm("Confirm deletion of picture? (Note: Picture wil be deleted permanently.");
if(cfm == true)
{
$.ajax({
url:"delete/deletedp.php",
type:"POST",
data:"ItemID="+itemid+"&FilePath="+filepath+"&ItemPicID="+itempicid,
success:function(){
alert("Image successfully deleted.");
$('#ImagePreviewDP').prop('src','').hide();
$('#ImagePreviewDPValidate').val('');
$('#DisplayDelete').hide();
$('#ItemDetailsContainer').trigger('change');
},
error:function(){
alert("Image could not be deleted due to an error.");
}
});
return true;
}
else
{
return false;
}
};
編輯:PHP代碼
$bizid=$_SESSION['BizID'];
$itemid=$_POST['ItemID'];
$file=$_POST['FilePath'];
$filepath=realpath('..\\'.$file);
$itempicid=$_POST['ItemPicID'];
//empties dp field in items table
$delete=$cxn->prepare("UPDATE `Items` SET `ItemDP`=:deleted WHERE `BusinessID`=:bizid AND `ItemID`=:itemid");
$delete->bindValue(":bizid",$bizid);
$delete->bindValue(":itemid",$itemid);
$delete->bindValue(":deleted","NULL");
$delete->execute();
//removes from itempics
$deletepic=$cxn->prepare("DELETE FROM `ItemPics` WHERE `BusinessID`=:bizid AND `ItemID`=:itemid AND `ItemPicID`=:itempicid AND `FilePath` LIKE :search");
$deletepic->bindValue(":search","%DP");
$deletepic->bindValue(":bizid",$bizid);
$deletepic->bindValue(":itemid",$itemid);
$deletepic->bindValue(":itempicid",$itempicid);
$deletepic->execute();
if($deletepic)
{
unlink($filepath);<--- This is the line returning the error
return (true);
}
else
{
return (false);
}
哪裏是你的PHP代碼? – Goikiu
@Goikiu添加了php代碼,對不起。 –
Unix不喜歡帶空格的filname。我想你將不得不用引號將文件名包裝起來。 – RiggsFolly