从php服务器发送zip文件到电子应用程序?怎么样?

时间:2019-01-10 08:05:23

标签: php node.js file electron

我需要将一个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. 电子应用程序收到套接字消息,并通过从套接字消息访问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
    

方案B: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 );
    

尽管我可以制定A计划,但在继续之前,我想考虑是否还有其他更好的方法。

我的问题:

  1. 还有其他更好的方法吗?

  2. 对于计划B,我仍然不知道如何让Electron应用程序充当远程FTP主机。电子甚至可以通过FTP接收文件吗?

欢迎任何可能帮助您的代码示例。谢谢!

0 个答案:

没有答案