Rumah >pembangunan bahagian belakang >C++ >Bagaimana saya boleh memuat turun fail excel dari jauh menggunakan Ajax dalam MVC tanpa memuat semula halaman?
muat turun fail excel jauh di MVC menggunakan AJAX: Pendekatan Lancar
Mengendalikan bentuk yang luas di MVC sering memerlukan menjana fail Excel dari data bentuk tertentu. Artikel ini menunjukkan bagaimana untuk mencapai ini dengan cekap menggunakan Ajax, mengelakkan penyegaran halaman lengkap.
Cabaran muat turun fail ajax
secara langsung memuat turun fail melalui Ajax tidak boleh dilaksanakan. Kita memerlukan penyelesaian.
Penyelesaian: Penjanaan fail sisi pelayan dan pemindahan data Ajax
Penyelesaian ini melibatkan penggunaan AJAX untuk menghantar data borang ke pelayan. Kod sisi pelayan (mis., Menggunakan Epplus atau NPOI) mencipta fail Excel. Fail tersebut kemudian disimpan sementara sebagai array byte, dan rujukan dikembalikan kepada pelanggan. Redirect berikutnya mencetuskan muat turun sebenar.
penyimpanan array byte dan lulus rujukan
Fail Excel yang dihasilkan disimpan sebagai array byte dalam bekas Tempdata, yang dikenal pasti dengan rujukan unik. Rujukan ini (bersama dengan nama fail) dihantar kembali sebagai JSON ke fungsi AJAX. Fungsi AJAX kemudian mengalihkan ke tindakan pengawal berasingan untuk mengambil fail dari tempData dan memulakan muat turun.
Pelaksanaan langkah demi langkah
1. Tindakan pengawal untuk penjanaan fail:
Tindakan ini menerima data borang, menghasilkan fail Excel menggunakan perpustakaan seperti Epplus, menyimpannya dalam tempData sebagai array byte, dan mengembalikan objek JSON yang mengandungi pengenal yang unik dan nama fail.
<code class="language-csharp">public ActionResult PostReportPartial(ReportVM model) { // Generate Excel file using EPPlus or NPOI ExcelPackage workbook = new ExcelPackage(); // ... file generation logic ... // Store file in TempData string handle = Guid.NewGuid().ToString(); TempData[handle] = workbook.GetAsByteArray(); return Json(new { FileGuid = handle, Filename = "ReportOutput.xlsx" }); }</code>
2. Panggilan dan Pengalihan Ajax:
Panggilan Ajax menghantar data borang ke tindakan. Setelah respons yang berjaya, ia mengalihkan ke tindakan pengawal lain untuk mengendalikan muat turun. PostReportPartial
<code class="language-javascript">$.ajax({ // ... AJAX settings ... success: function (response) { window.location = '/Report/Download?fileGuid=' + response.FileGuid + '&filename=' + response.Filename; } });</code>
3. Tindakan pengawal untuk muat turun fail:
Tindakan ini mengambil fail dari tempData menggunakan pengenal unik, dan menghantarnya kepada pelanggan untuk dimuat turun.
<code class="language-csharp">[HttpGet] public ActionResult Download(string fileGuid, string fileName) { if (TempData[fileGuid] != null) { byte[] data = TempData[fileGuid] as byte[]; return File(data, "application/vnd.ms-excel", fileName); } else { return new EmptyResult(); } }</code>Kaedah ini memastikan muat turun fail Excel yang cekap, mesra pengguna tanpa memuat semula halaman, memanfaatkan pemprosesan sisi pelayan untuk prestasi optimum. Tiada fail fizikal disimpan secara kekal di pelayan.
Atas ialah kandungan terperinci Bagaimana saya boleh memuat turun fail excel dari jauh menggunakan Ajax dalam MVC tanpa memuat semula halaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!