我需要将一个zip文件从PHP服务器发送到Electron应用程序,但仍然不确定如何直接执行该操作。
以下是我认为可能可行的一些方法。
方案A:服务器通过套接字连接触发电子应用程序的下载事件
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;
}
电子应用程序收到套接字消息,并通过从套接字消息访问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
PHP服务器直接通过FTP发送文件。
以下仅是我从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计划,但在继续之前,我想考虑是否还有其他更好的方法。
我的问题:
还有其他更好的方法吗?
对于计划B,我仍然不知道如何让Electron应用程序充当远程FTP主机。电子甚至可以通过FTP接收文件吗?
欢迎任何可能帮助您的代码示例。谢谢!