我有一個 php 腳本,它打開一個 csv 檔案,對其進行編輯,然后使用“file_put_contents”保存它。保存的位置與包含腳本的服務器目錄相同。
file_put_contents($destination,$string);
但是,我希望用戶能夠控制檔案在其計算機上的保存位置(即本地)。最好使用瀏覽器上的對話框彈出視窗。
這將如何實作?我需要在 php 腳本中添加標頭資訊嗎?提前致謝。
uj5u.com熱心網友回復:
- 要將檔案保存在本地并彈出視窗,您可以使用 JS(Blob 物件):
// ajax get data from server ( you can push file to server for editting it and return)
// data return of php : return stream_get_contents($file);
$.ajax({
type: "post",
url: url,
data: {...},
success: function (data) {
let blob = new Blob([data], { type: 'application/csv;charset=utf-8;' });
handleSaveCsv(blob);
}
});
async function handleSaveCsv(blob){
if( window.showSaveFilePicker ) {
const handle = await showSaveFilePicker({
suggestedName: 'csvExportName.csv',
types: [{
description: 'csv file',
accept: {'application/csv': ['.csv']},
}],
});
const writable = await handle.createWritable();
await writable.write( blob );
writable.close();
}
else {
const saveCsv = document.createElement( "a" );
saveCsv.href = URL.createObjectURL( blob );
saveCsv.download= 'csvExportName.csv';
saveCsv.click();
setTimeout(() => URL.revokeObjectURL( saveCsv.href ), 6000 );
}
}
window.showSaveFilePicker
用于打開彈出視窗
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/475895.html