22

我试图让 PHP 将上传的文件从 tmp 目录移动到我的网络服务器上的某个永久位置。看起来很简单,但我收到了这个错误:

Unable to move 'C:\UniServer\tmp\php3F62.tmp' to 'static/images/slides/1/1.jpg'

很直接,对吧?它找不到目标文件夹。

我的问题是:如何引用所需的目标目录?

引用是否相对于脚本在服务器上的位置?还是相对于 URL?还是PHP DOCUMENT_ROOT?还是操作系统的文件系统?或者是其他东西?

我在 PHP 文档中或在 SO 上的任何类似问题中都找不到答案。

任何人都可以帮忙吗?谢谢。

4

5 回答 5

43

跟踪路径的一种简单方法就是在 index.php 中定义绝对路径

define ('SITE_ROOT', realpath(dirname(__FILE__)));

然后像这样使用它:

move_uploaded_file($_FILES['file']['tmp_name'], SITE_ROOT.'/static/images/slides/1/1.jpg');
于 2012-06-08T15:09:53.370 回答
4

我在上传时遇到了同样的问题。看看我的例子,也许它可以帮助你。

我创建的文件名为“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;
}
于 2016-03-19T14:58:40.030 回答
0

它来自脚本在服务器上的位置!此外,您需要在此文件夹中具有写入权限:

'static/images/slides/1/1.jpg'

相反,最好以这种方式使用绝对路径:

'C:\UniServer\***\static\images\slides\1\1.jpg

使用绝对路径。

于 2012-06-08T15:02:55.800 回答
0
$destination = dirname(dirname(dirname(dirname(__FILE__))))."/runtime/tmp/";
chown($destination, 0755);
move_uploaded_file($info['tmp_name'], $destination.$info['name']);

这是我的解决方案,我只是使用 mkdir 创建一个目录来放置我想要移动的图片。希望它有所帮助。

于 2017-07-27T10:43:13.707 回答
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');
于 2020-03-07T09:36:11.573 回答