如何从 tmp 目录移动 Inbound Multipart form-data 文件

How to move Inbound Multipart form-data file from tmp directory

我正在编写一个 webhook 来接收入站传真。入站 POST 到达服务器。问题是检索 post 的附件。我的错误日志有这条消息。

 PHP Warning:  copy(/tmp/php4qL9du/pdf-sample.pdf): failed to open stream: No such file or directory in 

$_FILES 中的数组是这个

Array
(
  [attachment] => Array
    (
        [name] => pdf-sample.pdf
        [type] => application/pdf
        [tmp_name] => /tmp/phppw5aIU
        [error] => 0
        [size] => 7945
    )

)

我把数组放到了变量中

 $inboundFaxDocumentName = $_FILES['attachment']['name'];
 $inboundFaxLocation = $_FILES['attachment']['tmp_name'];
 $inboundFaxFilesize = $_FILES['attachment']['size'];
 $local = $inboundFaxLocation."/".$inboundFaxDocumentName;
 copy($local, "/var/www/html/new_home/");

我想我会继续并在此入站网络钩子上展示我对 headers 的了解

header("Access-Control-Allow-Origin: *");
header("Content-Type: multipart/form-data; charset-UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorizations, X-Requested-With");

我试过手动去寻找文件。我找不到任何文件。我不确定我还能做些什么来解决这种情况。非常感谢任何故障排除建议。

试试

$local = $inboundFaxLocation;

$_FILES['attachment']['tmp_name'] 应该已经包含临时文件的完整路径,无需再添加原始名称。

P.S。通常在 PHP 中,人们使用 move_uploaded_file() 专门用于将上传的文件从其临时上传位置传输到更永久的位置 - 实际上复制没有意义,因为临时文件无论如何都会被删除脚本结束的一段时间。

对我有用的最终代码。

 move_uploaded_file($_FILES['attachment']['tmp_name'], "/var/www/html/new_home/" . $_FILES['attachment']['name']);