0

我正在尝试将文件推送到 Amazon s3 文件桶。

我正在通过 html 表单发布文件。

我尝试像这样生成文件的路径($file 是 foreach 的一部分,因为我需要在表单提交中支持多个文件。)

$file['tmp_name'].'/'.$file['name'];

这会输出这样的文件路径

/Applications/MAMP/tmp/php/phpZDcVQv/pdf.pdf

/Applications/MAMP/tmp/php/ 存在,但里面什么都没有。我已经为每个人设置了对该文件夹的读写权限。

我使用库将图像发布到亚马逊:https ://github.com/tpyo/amazon-s3-php-class它还抱怨我提供的文件路径不存在。它正在运行如下检查:

if (!file_exists($file) || !is_file($file) || !is_readable($file))

文件怎么没有添加?我是否引用了错误的文件夹?带有代码的文件在 /web/projectname/ 网上有人说 php 直接删除临时文件不清楚。这是在响应运行之后吗?我需要以某种方式解决这个问题吗?

产生问题的最简单的代码:

foreach ($_FILES as $file) {
    $filepath = $file['tmp_name'].'/'.$file['name'];
    if(file_exists($filepath)){
        echo 'true <br />';
    }else{
        echo 'false <br />';
    }

}

即使文件已上传,此 echo:es false 也是如此。

$filepath 包含我上面描述的路径。

4

1 回答 1

0

手册所述

$_FILES['userfile']['tmp_name'] 上传文件存储在服务器上的文件的临时文件名。

$_FILES['userfile']['name'] 客户端计算机上文件的原始名称。

这意味着file_exists($file['tmp_name'])应该是true

该路径$file['tmp_name'].'/'.$file['name']是伪造的,因为$file['name']它只是为了通知您原始名称,但在将上传的文件保存在服务器上时不会使用此名称。

所以在你的例子/Applications/MAMP/tmp/php/phpZDcVQv中实际上是上传的文件。

于 2013-10-03T14:47:28.147 回答