Отправка почтового файла с php-сервера в электронное приложение? Как? - PullRequest
0 голосов
/ 10 января 2019

Мне нужно отправить zip-файл с PHP-сервера в приложение Electron, но я все еще не уверен, как это сделать напрямую.

Вот некоторый подход, который, я думаю, может сработать.

План A: сервер, запускающий событие загрузки электронного приложения через сокетное соединение

  1. PHP-сервер отправляет сокет-сообщение в электронное приложение

    function send($msg='', $port=2004, $host='127.0.0.1')
    {
    try {
    
        $sock = fsockopen($host, $port, $errono, $errmsg, 30);
    
        if ($errono != 0 && $errmsg != ''):
            $error_msg = 'Socket Error:  [' . $errono . '] ' . $errmsg;
            error_log($error_msg);
            $error_msg = 'Socket Error:  unsent message is "' . $msg . '"';
            error_log($error_msg);
    
        else:
    
            fputs($sock, $msg);
            $c = fread($sock, 10);
    
            return true;
        endif;
    
    } catch (Exception $e) {
    
    }
    
    return false;
    }
    
  2. Приложение Electron получает сообщение сокета и загружает zip-файл, обращаясь к URL-адресу zip-файла из сообщения сокета.

    downloadItem : (item, iType, basepath, dlErr, dlComplete) =>
        itemKey = null
        itemUrl = null
    
        if item?
            if item.key?
                itemKey = item.key
            if item.url?
                itemUrl = item.url
    
        if downloader? and itemKey? and itemUrl?
            fs = require('fs')
            filePath = basepath + itemKey
    
        try
            fs.unlinkSync(filePath)
        catch e
            console.warn e
    
        downloader.download(
            itemUrl
            iType
            (err=null, data={}) =>
                if err?
                    dlErr()
                else
                    dlComplete()
            (progress=0) =>
                console.log('PROGRESS', progress)
            =>
                dlErr()
            )
        return item
    

План Б: PHP FTP PUT

  1. PHP сервер отправляет файл напрямую по FTP.

  2. Ниже приведен пример, полученный от https://shellcreeper.com/move-files-server-to-server-using-simple-php/ Кажется, это работает, но я не уверен.

    /**
     * Transfer (Export) Files Server to Server using PHP FTP
     * @link https://shellcreeper.com/?p=1249
     */
    
    /* Remote File Name and Path */
    $remote_file = 'files.zip';
    
    /* FTP Account (Remote Server) */
    $ftp_host = 'your-ftp-host.com'; /* host */
    $ftp_user_name = 'ftp-username@your-ftp-host.com'; /* username */
    $ftp_user_pass = 'ftppassword'; /* password */
    
    
    /* File and path to send to remote FTP server */
    $local_file = 'files.zip';
    
    /* Connect using basic FTP */
    $connect_it = ftp_connect( $ftp_host );
    
    /* Login to FTP */
    $login_result = ftp_login( $connect_it, $ftp_user_name,    $ftp_user_pass );
    
    /* Send $local_file to FTP */
    if ( ftp_put( $connect_it, $remote_file, $local_file, FTP_BINARY )){
    echo "WOOT! Successfully transfer $local_file\n";
    }else {
    echo "Doh! There was a problem\n";
    }
    
    /* Close the connection */
    ftp_close( $connect_it );
    

Хотя я могу составить план А, я хотел бы рассмотреть вопрос о том, существует ли какой-либо другой лучший подход к моему делу, прежде чем я продолжу.

Мои вопросы:

  1. Любой другой лучший подход?

  2. Что касается плана B, я до сих пор не могу понять, как заставить приложение Electron действовать в качестве удаленного хоста FTP. Возможно ли даже электронное получение файла по FTP?

Приветствуется любой пример кода, который может помочь. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...