我正在尝试让PHP将上传的文件从tmp目录移动到我的网络服务器上的永久文件。这看起来很简单,但我收到了这个错误:
Unable to move 'C:\UniServer\tmp\php3F62.tmp' to 'static/images/slides/1/1.jpg'
非常直接,对吧?它找不到目标文件夹。
我的问题是:如何引用所需的目标目录?
引用是否相对于脚本在服务器上的位置?或者它相对于URL?还是PHP DOCUMENT_ROOT
?还是操作系统的文件系统?或其他什么?
我无法在PHP文档中找到答案,或者在SO ...中找到任何类似的问题。
有人可以帮忙吗?感谢。
答案 0 :(得分:30)
跟踪路径的一种简单方法就是在index.php中定义绝对路径
define ('SITE_ROOT', realpath(dirname(__FILE__)));
然后就像使用它一样:
move_uploaded_file($_FILES['file']['tmp_name'], SITE_ROOT.'/static/images/slides/1/1.jpg');
答案 1 :(得分:3)
我的上传时遇到了同样的问题。看看我的例子,也许它可以帮到你。
我创建的文件名为“uploads”。
$uploads_dir = 'uploads/';
$name = $_FILES['userfile']['name'];
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
//in case you want to move the file in uploads directory
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploads_dir.$name);
echo 'moved file to destination directory';
exit;
}
答案 2 :(得分:0)
它来自脚本在服务器上的位置!而且,您需要在此文件夹中具有写入权限:
'static/images/slides/1/1.jpg'
相反,最好以这种方式使用绝对路径:
'C:\UniServer\***\static\images\slides\1\1.jpg
使用绝对路径。
答案 3 :(得分:0)
$destination = dirname(dirname(dirname(dirname(__FILE__))))."/runtime/tmp/";
chown($destination, 0755);
move_uploaded_file($info['tmp_name'], $destination.$info['name']);
这是我的解决方案,我只是使用mkdir创建一个目录来放置我要移动的图片。 希望它有所帮助。
答案 4 :(得分:0)
我认为这将为您提供帮助,而不会给您任何错误:
$image = $_FILES['image']['name'];
$image_temp =$_FILES['image']['tmp_name'];
$target='C:/xampp/htdocs/jer/images/'.basename($_FILES['image']['name']);
move_uploaded_file($image_temp, "$target");
insert into images (images) values ('$target');