0

ファイルをアップロードしてSFTPで保存したい。

ここに私のコードがあります:

if ($size != 0) {
            $name = $uploadedFile->getClientOriginalName();
            $extension = $uploadedFile->getClientMimeType();
            $extension = \explode('.', $name);
            $shortName = $extension[0];
            $extension = \end($extension);
            $allowedExtension = "zip";
            $compare = strcmp(strtolower($extension), $allowedExtension);            
            if ($compare == 0) {//les deux chaines sont égaux
                $saveName = $name;                 
                if (file_exists($target_path . $name))
                    $saveName = $shortName . $date . '.' . $extension;
                /* modif le dossier sera déposé en SFTP*/

                /* Connexion SFTP */
                $connection = ssh2_connect('webhost01', 22); // acces inetrne
                ssh2_auth_password($connection, 'fbh', 'F#Bh52.6');
                $sftp = ssh2_sftp($connection);
                /* Déplacer le dossier dans le sftp */
                ssh2_scp_send($connection,$saveName, '/home/fbh/newdir/', 0677);
}

しかし、私はこのエラー ssh2_scp_send(12100102430010813_192636.zip) [function.ssh2-scp-send]: failed to open stream: No such file or directory. 何か助けてください

4

2 に答える 2

0

$saveName を変更しましたが、ファイルをこの場所に移動していません。これを file_exists($saveName) で確認してください

于 2013-01-09T09:29:27.027 に答える
0

ご回答ありがとうございます。問題は、サーバー上の一時ファイルから取得する必要があることでした。

新しいコードは次のとおりです。

if ($size != 0) {            
            $name = $uploadedFile['name'];            
            $extension = $uploadedFile['type'];
            $extension = \explode('.', $name);
            $shortName = $extension[0];
            $extension = \end($extension);
            $allowedExtension = "zip";
            $compare = strcmp(strtolower($extension), $allowedExtension);                          
            if ($compare == 0) {//les deux chaines sont égaux
                $tempFile= $uploadedFile['tmp_name'];
                $saveName = $name;                 
                if (file_exists($target_path . $name))
                    $saveName = $shortName . $date . '.' . $extension;
                /*
                 *  modif le dossier sera déposé en SFTP Cnx + deposer
                 */ 

                /*
                 * parametres SFTP
                 */
                $host = $this->container->getParameter('host');
                $port = $this->container->getParameter('port');
                $user = $this->container->getParameter('user');
                $mdp  = $this->container->getParameter('mdp');
                $pathSFTP  = $this->container->getParameter('pathSFTP');
                $connection = ssh2_connect($host, $port); // acces inetrne
                ssh2_auth_password($connection, $user, $mdp);
                $sftp = ssh2_sftp($connection);
                /* Déplacer le dossier dans le sftp */
                ssh2_scp_send($connection,$tempFile, '$pathSFTP'.newFile.zip, 0677);                
                $spi = $this->get('spi');
                $partenaireManager = $spi->getPartenaireManager();
                $id_import = $partenaireManager->insertImport($id, $saveName);

                if ($id_import > 0) {

                    return $this->render('ListBundle:Default:rapportUpload.html.twig', array('messgae' => $name . " a été uploadé avec succées",
                                'id_partenaire' => $id, 'id_import' => $id_import));
                }
            } else {
                return $this->render('ListBundle:Default:rapportUpload.html.twig', array('messgae' => "L'extention de " . $name . " est invalide",
                            'id_partenaire' => $id));
            }
        } 
于 2013-01-09T11:03:59.367 に答える