【发布时间】:2015-06-04 14:32:41
【问题描述】:
所以我试图在 webhost 上创建一个 php,允许客户端将文件上传到 webhost,然后 webhost 使用 ftp_put 将文件上传到另一个 ftp 服务器。以下函数用于上传文件。
//upload ftp
function ftp_upload($conn, $vid_name, $video){
//get tmp file
$file_tmp_name = $video['tmp_name'];
echo $file_tmp_name;
//combine name with extension name
$server_file_name = $vid_name . "." . pathinfo($video['name'],PATHINFO_EXTENSION);
//upload video
$upload = ftp_put($conn, $server_file_name, $file_tmp_name , FTP_BINARY);
return $upload;
}
但是它不断收到错误消息, 警告:ftp_put(/tmp/phpKOtNWK) [function.ftp-put]:打开流失败:没有这样的文件或导演。
于是我去了我的子域下的webhost中的文件管理器,没有tmp这样的目录,我没有权限进入webhost的根目录。
感谢您的帮助。
【问题讨论】:
-
$video['tmp_name']来自哪里? -
首先,我会通过检查
$video中的error索引来确认PHP 认为文件已成功上传。如果 PHP 能够编写它,我希望它能够读取它。目前,听起来更像是在调用此函数之前文件已被移动。 -
$video = $_FILES['file'];
-
是的,$video 中的错误索引为 0,这根本没有错误。我使用会话来存储文件,然后重定向到自身并将会话向下传递以进行上传。你认为这可能是它被移动的原因吗?
-
不要使用临时名称,我不会尝试将
$_FILE放入$_SESSION。完全处理文件上传,然后将最终路径放入会话中。在您的ftp_put中使用该最终路径。