单击下载按钮时,下载文件大约需要 15 秒,因为它必须通过 SFTP 进入服务器,找到正确的路径/文件,然后返回响应download。
<a class="btn btn-primary btn-sm text-primary btn-download-1" onclick="startDownload('1')"><i class="fa fa-download "></i></a>
注意:其中 1 是我知道它是哪个文件的关键......
该按钮只会触发下面的这个功能
function startDownload(interfaceId) { window.location = "/nodes/interface/capture/download?port=" + interfaceId; console.log(interfaceId); }
它基本上刷新页面并调用下载路径
/节点/界面/捕获/下载
public function download_files()
{
$dir = '';
$portNumber = Request::get('port');
$zipMe = false;
$remotePath = "/home/john/logs/".$dir."/";
if (!isset($dir) || $dir == null) {
return redirect()->back()->withInput()->withFlashDanger('SFTP Could not connect.');
}
$acsIp = explode('://', env('ACS_URL'));
$acsIp = explode(':',$acsIp[1])[0];
$sftp = new SFTP($acsIp.':22');
if (!$sftp->login('john', '***')) {
return redirect()->back()->withInput()->withFlashDanger('SFTP Could not connect.');
}
// Get into the Specified Directory
$sftpConn = Storage::disk('sftp');
$SFTPFiles = $sftpConn->allFiles('/'.$dir);
if ( count($SFTPFiles) > 0 ) {
foreach ($SFTPFiles as $file) {
$fileName = $file;
break;
}
} else {
\Log::info('Files Not found in the Remote!');
return redirect()->back()->withInput()->withFlashDanger('Files Not found in the Remote!');
}
// Create and give 777 permission to remote-files directory
if (!is_dir(public_path('remote-files/'.$dir))) {
mkdir(public_path('remote-files/'.$dir), 0777, true);
}
$filesToZip = [];
foreach ( $SFTPFiles as $fileName ) {
if ( $fileName == '..' || $fileName == '.' ) {
continue;
} else if ( $fileName == '' ) {
\Log::info('File not found');
continue;
}
}
}
}
它正在工作,但不知何故,它在那里停留了 15 秒,没有任何反馈。这真的很糟糕,用户不知道发生了什么。
我想显示一个模式“正在下载,请不要关闭窗口”,但我不知道该怎么做,因为我必须使用 GET 下载文件。我现在有点卡住了。
天涯尽头无女友
米琪卡哇伊