我正在尝试将文件推送到 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包含我上面描述的路径。
如
手册所述:
$_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
实际上是上传的文件。