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