0
臨時路徑我有兩個功能(僞碼)圖片資源標識符發送到服務器上的
function UploadImage($FilePath) {
$image = imagecreatefromjpeg($FilePath);
// do some work on $image like resize, compress, etc
$NewImage = imagecreatetruecolor($x, $y);
imagecopyresampled($NewImage, $image, ...);
//$NewImage now holds an image resource identifier (IRI) object.
//SaveFile($NewImageToFilePathSomehow);
}
function SaveFile($FilePath) {
// perform some other checks and do some stuff
rename($FilePath, $NewPath);
}
我顯而易見的選擇是使用imagejpeg
手動創建在服務器上的文件的副本,通過路徑SaveFile
上然後再次手動刪除該文件。我想知道是否有一種方法可以創建像tmpfile
這樣的臨時文件,並允許並傳遞路徑。
SaveFile
是一個廣義函數,它也被用於其他地方,因此它只是邏輯屬性類型是路徑而不是文件句柄(如fopened
文件流)。
但會有任何問題,因爲'SaveFile'會將這個臨時文件移動到一個新的位置?如果php決定刪除腳本執行完成時的臨時文件,就像使用'tmpfile'文件一樣。我認爲最好是在任何地方用'imagejpeg'創建普通文件,然後將路徑傳遞給'SaveFile',因爲它無論如何都會被移動。 – Achshar
據我可以從文檔中知道,'tempnam'不會刪除創建的文件,它只會創建具有唯一文件名的文件。如果文件是在'tmp'目錄下創建的,它們可能被PHP刪除。因此,如果'SaveFile'重命名文件名並將文件路徑擴展名爲除tmp目錄以外的任何內容,則不會被刪除。 – mani
很酷,是的文檔沒有提及刪除。我認爲跳過tempnam會更快,更清潔。我會直接從'imagejpeg'創建文件並移動它。如果'imagejpeg'一旦創建文件就會覆蓋文件,那麼創建文件就沒有意義了。 – Achshar