Setelah melalui semua postingan tentang mengupload file besar di csdn, saya menulis sampah ini. (:-))
Ada beberapa cara untuk mengupload file berukuran besar:
1. Metode HttpWorkerRequest Sigui terlalu sulit untuk dipahami :-(
2. Gunakan kontrol pihak ketiga AspNetUpload untuk meminta uang! ! Lupakan saja, kami masih suka gratis.
3. Ubah file web.config, tetapi tidak dapat menangkap kesalahan.
4. Unggah melalui ftp. Server perlu menyediakan layanan ftp.
Kita tidak punya pilihan selain memilih cara ketiga. Siapa yang membuat kita begitu bodoh! (Itu terlalu bodoh. Tidak masalah. Kamu harus makan lebih banyak ikan. Kudengar makan ikan bisa membuatmu lebih pintar.)
Kemudian pelajari cara ketiga dengan cermat!
Ubah file Webcong:
<sistem.web>
<httpRuntime maxRequestLength="40690"
useFullyQualifiedRedirectUrl="benar"
waktu eksekusi habis="6000"
useFullyQualifiedRedirectUrl="false"
minBenang Gratis="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
aktifkanVersionHeader="benar"
/>
</system.web>
Diantaranya yang berkaitan erat dengan upload adalah:
maxRequestLength
Menunjukkan ukuran unggahan file maksimum yang didukung oleh ASP.NET.
Batasan ini dapat digunakan untuk mencegah serangan penolakan layanan yang disebabkan oleh pengguna yang meneruskan file dalam jumlah besar ke server.
Ukuran yang ditentukan dalam KB.
Nilai defaultnya adalah 4096 KB (4 MB).
batas waktu eksekusi
Menunjukkan jumlah detik maksimum yang diperbolehkan untuk mengeksekusi permintaan sebelum ditutup secara otomatis oleh ASP.NET.
Satuannya adalah detik. Setel ini ke nilai yang lebih besar saat mengunggah file besar.
Jika memori server 512M, file sebesar 160M dapat diunggah. (Saya belum mencobanya. Ini adalah pendapat bulat dari banyak postingan di csdn.)
'www.downcodes.com
Pada titik ini, pengaturan web.config telah berakhir.
Namun, setelah ukuran file yang diunggah melebihi rentang ukuran file yang ditetapkan, kesalahan berikut akan terjadi:
Halaman tidak dapat ditampilkan. Halaman yang ingin Anda lihat saat ini tidak tersedia. Situs web mungkin mengalami kesulitan teknis, atau Anda mungkin perlu menyesuaikan pengaturan browser Anda.
Meskipun tidak dapat diselesaikan, kita tetap perlu menangkap kesalahan ini! Apa yang harus dilakukan?
Saya makan beberapa ikan baru-baru ini dan memikirkannya. Karena kesalahan ini adalah kesalahan latar depan yang disebabkan oleh kontrol file, maka tidak layak menggunakan try...catch untuk menangkapnya di latar belakang.
Jadi saya berpikir untuk menggunakan mekanisme halaman pengambilan kesalahan .NET untuk menanganinya. Itu bisa dilakukan.
1. Siapkan web.config terlebih dahulu
<customErrors mode="Aktif"/>
2. Buat file error.aspx baru khusus untuk menangkap kesalahan.
3. Tambahkan direktif halaman ke halaman depan halaman aspx tempat file diunggah. ErrorPage="UploadError.aspx"
4. Tambahkan beberapa kode ke error.aspx untuk menentukan apakah pesan kesalahan tersebut merupakan kesalahan latar depan yang disebabkan oleh file.
UploadError kelas publik : Sistem.Web.UI.Halaman
{
private void Page_Load(pengirim objek, System.EventArgs e)
{
Pengecualian ex = Server.GetLastError();
jika (misal! = nol)
{
Respon.Redirect("../error.aspx");
}
else // Kesalahan latar depan ex adalah nilai nol
{
Response.Redirect("uploadexcel.aspx?err=1"); //Lompat kembali ke halaman upload dan tambahkan parameter err untuk menampilkan pesan kesalahan
}
}
5. Tampilkan pesan kesalahan.
upload kelas publikexcel : System.Web.UI.Page
{
private void Page_Load(pengirim objek, System.EventArgs e)
{
if (Permintaan["err"] == "1")
{
Page.RegisterStartupScript("budget","<script bahasa = javascript>alert('Upload file gagal! Ukuran file terlalu besar !')</script>");
}
}
}
6. Selesaikan dan hentikan. (Ikan ini tidak gratis.)
Setelah modifikasi di atas, unggahan sekarang menjadi program yang menentukan ukuran file. Jika melebihi, pesan kesalahan akan muncul.
Dengan cara ini akan jauh lebih baik. Setidaknya saya bisa menerimanya, dan tidak akan terlalu sulit untuk menjelaskannya kepada pengguna.