Sftp上传文件的错误0字节

时间:2018-03-19 17:20:45

标签: php sftp

<?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”]。

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

看了一会儿之后很明显...... PHP无法读取你要求它阅读的文件。我觉得日志中没有错误,第二个fopen会失败。

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

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

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

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

那就是你想在你的代码中使用这一行:

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