使用FTP上传PNG图片失败,请求协助排查问题
问题分析与解决
核心问题
你忽略了PHP上传文件的存储逻辑:$_FILES['srcfile']['name']只是客户端上传时的原文件名,并非服务器上该文件的实际存储路径。服务器接收上传文件后,会将其临时存放在系统临时目录中,文件的实际访问路径是$_FILES['srcfile']['tmp_name'],用原文件名去读取自然会提示找不到文件。
修正后的代码
将本地文件路径替换为临时文件路径即可解决问题:
$remote_dir = 'test/'; // 改用服务器上的临时文件路径 $src_file = $_FILES['srcfile']['tmp_name']; // 远程文件名保留客户端原名称 $remote_file_name = $_FILES['srcfile']['name']; $remote_file_path = $remote_dir . $remote_file_name; // 先检查上传是否有基础错误 if ($_FILES['srcfile']['error'] !== UPLOAD_ERR_OK) { echo '上传过程出错,错误码:' . $_FILES['srcfile']['error']; exit; } if (ftp_put($ftpcon, $remote_file_path, $src_file, FTP_BINARY)) echo 'File uploaded successfully'; else echo 'Error uploading file!';
额外提示
- 上传完成后,PHP会自动清理临时文件,无需手动删除;如果需要保留本地副本,需提前用
copy()将临时文件复制到指定目录。 - 务必先检查
$_FILES['srcfile']['error'],排除文件大小超限、上传中断等基础上传错误。
内容的提问来源于stack exchange,提问作者Kavin-K
相关产品推荐
相关产品推荐

