Sftp 上传文件错误 0 Byte

Sftp uploading file's error 0 Byte

<?php


if(isset($_POST["submit"])) {

$filename = $_FILES["fileToUpload"]["name"];

require_once('/home/Script_Server/login_server_ftp.php');  

$resConnection = ssh2_connect($strServer, $strServerPort);

if(ssh2_auth_password($resConnection, $strServerUsername, $strServerPassword)){
    //Initialize SFTP subsystem

    echo "connected";
    $resSFTP = ssh2_sftp($resConnection); 
    /*la posizione resSFTP è la / assoluta nel server*/

    $resFile = fopen("ssh2.sftp://{$resSFTP}/". "var/www/html/mysite.com/folder/" . $filename, 'w');

    $srcFile = fopen("/var/www/html/mysite.com/folder/".$filename, 'r');
    $writtenBytes = stream_copy_to_stream($srcFile, $resFile); 
    echo "Byte scritti: " . $writtenBytes;
    fclose($resFile);
    fclose($srcFile);        

}else{
    echo "Unable to authenticate on server";
}



} /*Chiusura POST */
?>

下午好,之前 html 页面中的表单调用的脚本有问题,我用以下命令捕获文件:$_FILES["fileToUpload"]["name"].

这不是 return 错误,但它只上传了 0 字节大小的文件名,写入的字节数也是 0,我正在使用 CentOs。

感谢您的帮助。

看了一会儿之后很明显...PHP无法读取您要求它读取的文件。我很惊讶日志中没有关于此的错误,第二个 fopen 将失败。

那是因为你试图从错误的文件名中读取

"/var/www/html/mysite.com/folder/" . $_FILES["fileToUpload"]["name"]

这不是您上传时存储文件的位置。假设表单中的字段名为fileToUpload,用户上传的文件将存储在这里:

$_FILES['userfile']['tmp_name']

那是你想要在你的代码中加入这一行:

$srcFile = fopen($_FILES['userfile']['tmp_name'], 'r');