我想从我的外部URL下载一个pdf,将其存储在我的服务器中,并在用户单击按钮触发时下载它。
我试图将其存储到我的服务器及其成功,但是我不知道如何在用户单击按钮后自动下载pdf。
我的观点:
<button id="appPrintbutton" name="appPrintbutton" style="cursor:pointer;padding: 3px; margin: 2px;float:left;" title="Cetak Dokumen"><i class="fas fa-check fa-lg fa-fw"></i>Cetak</button>
<script type="text/javascript">
$("#appPrintbutton").on('click', function() {
var selectedId=[];
selectedId.push(document.getElementById("txtNO_DOK").value);
$.ajax({
url: "<?php echo base_url().'index.php/finance/M_approve/DOWNLOAD_FILE_NILAI'?>",
type: 'POST',
data: {json: JSON.stringify(selectedId)},
dataType: 'json',
success: function (data) {
window.location.href = "<?php echo base_url().'index.php/finance/M_approve/';?>";
},
error: function (data) {
console.log('error');
}
});
return false;
});
</script>
我的控制器是:
public function DOWNLOAD_FILE_NILAI()
{
$msg="";
$status="";
$rptName="";
$pathdir="/wwwroot/php/download/";
$ieselon="ALL";
$data=$this->input->post('json');
$nodok=substr($data, 1, 9);
if($nodok!="" )
{
$randfname = Date("Y_m_d");
$fname = $nodok."_nilai".$randfname.".pdf";
$rptName="wfinancekas_cetak.rpt";
$strParamName= "&promptex-no_dok=".$nodok;
$strParamName.= "&promptex-terbilang=".$nodok;
$exportType="PDF";
$serverLink = "http://11.5.1.44:12000/ReCrystallizeServer/ViewReport.aspx?report=".$rptName;
$fullLink=$serverLink.$strParamName."&exportfmt=$exportType";
$fdata = file_get_contents($fullLink);
$fSaveAs=fopen($pathdir."$fname","w");
fwrite($fSaveAs, $fdata);
fclose($fSaveAs);
$status="OK";
}
$dataStatus[] = array(
'Status'=>$status,
'url'=>base_url(),
'fname'=>$fname,
'Msg'=>$msg
);
print_r(json_encode($dataStatus,JSON_PRETTY_PRINT));
}
我想要的输出:
自动下载 pdf
文件
有什么办法可以做到这一点吗?
您可以使用 PHP 中的file_put_contents()
函数读取和写入服务器目录。
$remote_file = 'http://example.com/path/to/pdffile.pdf';
$local_file = '/documents/new_file.pdf';
file_put_contents($local_file, file_get_contents($remote_file));
更新
如果无法直接写入文件,可以使用两步法。首先创建空白文件,然后写入它。
$local_file = fopen("/documents/new_file.pdf", "w")
这将创建一个文件,以便其他函数可以写入该文件。
这样,您可以显示来自外部/内部URL的文件。在下载的情况下,您可以提供/documents/new_file.pdf
的本地URL
因此,当用户单击button
时,您可以点击ajax
,这会触发执行上述代码的服务器端脚本。
确保您的本地目录
/documents/
可由进程PHP
写入。
阅读:https://www.php.net/manual/en/function.file-put-contents.php