我的目的是将从我的 PC 创建的远程文件上传到特定文件夹,但我不知道下面的代码有什么问题。它上传具有名称和 .jpg 扩展名的文件,但它不会将文件移动到指定的文件夹。
if(isset($_POST["image"])){
define("SITE_NAME","project_name/"); //constant for project name
define("SITE_PATH",$_SERVER['DOCUMENT_ROOT']."/".SITE_NAME); //constant for project base directory
define("IMAGES_URL",SITE_URL."images/"); //constant for image directory
$upload_base_dir=IMAGES_URL;
$upload_time_dir=date('Y')."/".date('m')."/".date('d')."/"; // setup directory name
$upload_dir = $upload_base_dir.$upload_time_dir;
if (!file_exists($upload_dir)) {
mkdir($upload_dir, 0777, true); //create directory if not exist
}
$input = $_POST["image"];
$file = fopen(time()."image.jpg", 'wb');
fwrite($file, $input);
//$image_name=basename($_FILES['image']['name']);
$image=time().'_'.$image_name;
move_uploaded_file($file,$upload_dir.$image);
fclose($file);
}
有什么建议么?先感谢您。
move_uploaded_file($file,$upload_dir.$image) 仅适用于 temp 内的项目,可通过 $_FILES 超全局访问。如果您在邮件中将文件作为条纹发送,那将不起作用。
1) 如果文件是表单上传,请确保表单是多部分的,并通过 $_FILES 超全局访问您的文件
move_uploaded_file($_FILES['userfile']['tmp_name'], $yourDirectory.$yourFilename);
2) 如果您通过 post 将文件作为流发布(请记住,这仅适用于小文件,因为大文件会超过请求限制)。使用 fopen 将文件直接保存到它的目标,或者在创建后使用 rename() 移动它 - http://php.net/manual/en/function.rename.php
rename($currentFilePath, $newFilePath)
PS将文件作为发布流发送是一个非常非常糟糕的主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句