ftp_put实际有效却返回错误提示,ftp_nb_put上传异常求助
问题分析与解决
一、ftp_put 提示错误但实际上传成功的原因
你的代码里条件判断逻辑完全写反了:
- PHP的
ftp_put()函数在上传成功时返回true,失败时返回false - 你当前的判断是
if (!$upload),也就是当upload为true(上传成功)时,!$upload等于false,代码会走到else分支输出错误提示;反之上传失败时才会输出成功提示
修正后的判断逻辑:
if ($upload) { echo "File uploaded successfully to FTP server!"; } else { echo "Error uploading file! Please try again later."; }
二、ftp_nb_put 导致页面无限加载的原因
ftp_nb_put()是非阻塞式上传函数,它不会一次性完成上传流程,需要通过循环持续调用相关函数推进上传进度,直到返回FTP_FINISHED或FTP_FAILED状态。如果缺少这个循环,脚本会一直等待上传状态变化,导致页面无限加载。
正确使用示例:
$remote_file = './PROCESS CHECKSHEET/0694384-000-AA2.xlsx'; $local_file = './PROCESS CHECKSHEET/0694384-000-AA2.xlsx'; // 初始化非阻塞上传 $upload = ftp_nb_put($ftpcon, $remote_file, $local_file, FTP_BINARY); // 循环推进上传进度 while ($upload == FTP_MOREDATA) { $upload = ftp_nb_continue($ftpcon); } // 判断最终上传状态 if ($upload == FTP_FINISHED) { echo "File uploaded successfully to FTP server!"; } else { echo "Error uploading file! Please try again later."; } ftp_close($ftpcon);
内容的提问来源于stack exchange,提问作者Rillu
相关产品推荐
相关产品推荐

