Penggunaan teknologi WEB untuk mengimplementasikan sistem manajemen dengan struktur B/S (browser/server) merupakan tren perkembangan otomatisasi perkantoran. Sistem manajemen berdasarkan teknologi WEB telah berkembang pesat dalam beberapa tahun terakhir karena memiliki siklus pengembangan yang pendek; tidak bergantung pada platform pengguna, mudah untuk mengimplementasikan aplikasi interaktif dan dapat mengumpulkan, memproses, dan mempublikasikan informasi dengan cepat dan efisien; Teknologi ASP secara bertahap menjadi alat pilihan untuk mengembangkan sistem manajemen karena efisiensi pengembangannya yang tinggi, interaktivitas yang baik, dan keamanan yang kuat.
Banyak aplikasi berbasis WEB melibatkan operasi pengunggahan file. Teknologi pengunggahan file yang umum meliputi: berdasarkan protokol HTTP; berdasarkan komponen pengunggahan file yang dikembangkan oleh VB (atau DELPHI dan bahasa pemrograman lain berdasarkan teknologi basis data, dll.); Metode-metode ini umumnya mengharuskan pemrogram untuk menguasai teknologi WEB, teknologi database atau teknologi CGI atau teknologi komponen pada saat yang bersamaan, dan memiliki persyaratan yang lebih tinggi bagi pemrogram. Penggunaan teknologi ASP untuk mengimplementasikan secara langsung fungsi pengunggahan file yang akan diperkenalkan dalam artikel ini hanya mengharuskan pemrogram untuk menguasai satu teknologi ASP, yang sangat mengurangi kesulitan pemrograman.
Perbandingan beberapa teknologi pengunggahan file
1. Berdasarkan protokol HTTP
Metode ini mengharuskan pemrogram menggunakan perangkat lunak pihak ketiga, seperti DELPHI, VB, dll., untuk terlebih dahulu melakukan pemrograman protokol HTTP dalam aplikasi, lalu mengemas konten file untuk diunggah dalam format protokol HTTP, dan terakhir mengirimkan pesan permintaan unggah ke server WEB untuk mencapai unggahan file. Karena DELPHI dan VB tidak dapat menulis program jaringan WEB yang lengkap dan hanya dapat menulis aplikasi WEB kecil, metode ini hanya digunakan untuk aplikasi jaringan dengan fungsi terbatas.
2. Komponen pengunggahan file dikembangkan berdasarkan VB (atau DELPHI, dll.)
Metode ini menggunakan VB (atau DELPHI, dll. bahasa pemrograman) untuk mengembangkan komponen server ASP guna mengimplementasikan layanan pengunggahan file tertentu. Pertama-tama menggunakan fungsi formulir ASP untuk mengunggah file (format biner) dari klien ke server, dan kemudian menggunakan komponen yang dikembangkan VB untuk memproses file biner menjadi file yang dapat dibaca dan ditulis secara normal. Metode ini mengharuskan pemrogram tidak hanya menguasai bahasa ASP, tetapi juga menggunakan bahasa pihak ketiga seperti VB untuk pemrograman komponen, sehingga meningkatkan kesulitan pengembangan.
3.
Cara ini mirip dengan cara sebelumnya yang berbasis teknologi database. Perbedaannya terletak pada pengolahan file biner yang diunggah. Ia menggunakan database untuk menyimpan file biner. Baik database kecil maupun database besar menyediakan tipe data untuk menyimpan data biner. Cukup simpan data di kolom yang sesuai dalam metode Append Chunk. Meskipun metode ini sederhana dan layak, karena ukuran file yang diunggah berbeda setiap kali, hal ini akan menyebabkan pemborosan ruang database dan mengurangi kecepatan akses data; dan file hanya dapat diunggah di lingkungan akses database. menyebabkan ketidaknyamanan yang besar.
Contoh Analisis
Namun, penggunaan teknologi ASP untuk mengimplementasikan fungsi pengunggahan file secara langsung hanya memerlukan pemrogram untuk menguasai satu teknologi ASP, yang
sangat mengurangi kesulitan pemrograman. Di bawah ini kami akan memperkenalkan cara menggunakan metode ini melalui sebuah contoh.
1. Formulir unggah file
Pertama, Anda perlu menulis formulir yang dapat menyediakan fungsi unggah file. Programnya adalah sebagai berikut:
<Form action="upload.asp" method=post enctype="multipart/form-data">
Unggah file:<Jenis masukan=nama file=file1><br>
<tipe input=kirim nama=nilai unggah="Unggah">
</form>
Diantaranya, parameter enctype digunakan untuk mengatur metode pengkodean MIME formulir. Saat mengunggah file (atau berisi kotak teks), atributnya harus disetel ke "multipart/form-data"; asp adalah sisi server Program ASP yang memproses aliran file biner yang diterima akan diperkenalkan nanti di artikel ini.
2. Analisis format file unggahan
Sebelum memproses file, pertama-tama kita harus memahami format spesifik file yang diunggah. Kita dapat melihat kode binernya dengan menulis program ASP sederhana berikut:
<%
filesize=Request.TotalBytes 'Dapatkan ukuran file yang diunggah
filedata=Request.BinaryRead(filesize) 'Dapatkan data biner dari file yang diunggah
Response.BinaryWrite filedata 'Menampilkan data biner di browser
%>
Analisis kode biner dari file yang diunggah yang ditampilkan di browser dan temukan bahwa kode tersebut terdiri dari empat bagian (jika beberapa file atau kotak teks diunggah secara bersamaan, kode-kode tersebut disusun sesuai urutan pengunggahan, dengan urutan yang sama format), dan isi setiap bagian Dipisahkan dengan simbol pengangkutan kembali dan umpan baris:
1) Bagian pertama (tanda awal)
--------------------------7d329631b04d4
2) Bagian 2 (Deskripsi File)
Disposisi Konten: form-data; name="filename="C:Documents and SettingsAdministratorMy DocumentsInvitation.doc" Tipe Konten: application/msword
di Oleh karena itu , kita bisa mendapatkan nama file dan jalur absolut dari file yang diunggah, serta jenis file. Informasi ini penting untuk menyimpan file dengan benar.
3) Bagian ketiga (konten file)
adalah konten biner file, dihilangkan.
4) Part 4 (Tanda Akhir)
--------------------------7d329631b04d4
Mari kita lihat isi Part 1 dan Part 4 , "-- ------------------------------7d329631b04d4" (nilainya berbeda setiap kali Anda mengunggahnya) berperan sebagai pemisah, Ini menandai awal dan akhir suatu data (bila ada banyak unggahan). Mengenai informasi yang diperlukan untuk menyimpan file, pertama-tama kita perlu mendapatkan nama file dari "nama file" bagian kedua data, kemudian kita perlu menemukan posisi awal file dengan benar, dan terakhir menggunakan teknologi ASP untuk menyimpan file biner dengan nama file aslinya. Jika beberapa konten (seperti beberapa kotak teks dan file) diunggah pada saat yang sama, konten tersebut diproses dengan cara yang sama. Setiap bagian konten disertakan dalam pembatas, namun kotak teks dan file diekspresikan dengan cara yang sedikit berbeda Hal ini dapat dilakukan dengan menganalisis kode binernya secara khusus untuk memahaminya.
3. Menggunakan teknologi ASP untuk mengimplementasikan penyimpanan file
dan pemrosesan kode upload file
1) Memperoleh kode pembatas
di atas, kita telah mengetahui bahwa pembatas berperan penting dalam membagi beberapa segmen data (termasuk kotak teks dan berbagai jenis file. ) . Seperti yang telah dianalisis sebelumnya, pemisah muncul sebelum simbol pengangkutan kembali dan garis umpan pertama. Oleh karena itu, kode pembatas dapat diperoleh melalui program berikut:
<%
newline=chrB(13) & chrB(10) 'baris baru mewakili karakter pengangkutan biner
filesize=Request.TotalBytes 'filesize adalah ukuran file yang diunggah
filedata=Request.BinaryRead(filesize) 'filedata adalah data biner dari file yang diunggah
pembagi=leftB(filedata,clng(instrb(filedata,newline))-1) 'pembagi adalah pembagi
%>
Catatan: Karena semua proses di sini adalah bytecode biner, semua fungsi menggunakan versi binernya dengan tambahan "b".
2) Mendapatkan isi file (atau kotak teks)
(1) Fungsi persiapan (mengubah string biner menjadi string)
Isi file yang diunggah tidak perlu melalui proses konversi dari biner ke string, dan dapat langsung disimpan . Namun, jika Anda perlu mengekstrak isi kotak teks atau nama file, Anda harus melakukan konversi. Oleh karena itu, perlu untuk menulis fungsi konversi universal yang sesuai untuk karakter Cina. Berikut kode fungsinya :
Fungsi BtoS (bstr)
Jika bukan Apakah Null (bstr) Lalu
untuk i = 0 hingga lenb(bstr) - 1
bchr = tengahb(bstr,i+1,1)
Jika ascb(bchr)>127 Maka 'Karakter Cina adalah byte ganda, jadi dua karakter harus diproses bersama
suhu = suhu&chr(ascw(midb(bstr, i+2, 1)&bchr))
saya = saya+1
Kalau tidak
suhu = suhu&chr(ascb(bchr))
Akhiri Jika
Berikutnya
Akhiri Jika
BtoS=suhu
Fungsi Akhir
(2) Mendapatkan konten file (atau kotak teks).
Dalam aplikasi WEB sebenarnya, operasi pengunggahan mungkin melibatkan banyak konten, seperti beberapa kotak teks, banyak file, dll. File dan kotak teks mudah dibedakan. Data file berisi string "nama file =". Oleh karena itu, kami menulis fungsi umum berikut, yang dapat digunakan untuk mengekstrak konten file dan konten kotak teks (diperlukan konversi biner):
Fungsi getdata(data byval, pembagi byval, final) 'data mewakili string biner; pembagi mewakili pembagian simbol; final mewakili posisi akhir data
nama file=chrb(102)&chrb(105)&chrb(108)&chrb(101)&chrb(110)&chrb(97)&chrb(109)&chrb(101)&chrb(61)&chrb(34) 'Biner string "nama file" ekspres
bncrlf=chrb(13)&chrb(10) 'Karakter pengembalian kereta biner
startpos = instrb(data,divider)+lenb(divider)+lenb(bncrlf) 'Posisi awal
endpos = instrb(startpos,data, pembagi)-lenb(bncrlf) 'Posisi akhir
part1 = midb(data, startpos, endpos-startpos) 'Isi antara dua pemisah
baris pertama = midb(part1, 1, instrb(part1, bncrlf)-1) ' Deskripsi paragraf sebelum konten
If (instrb(firstline,filename)=0) Kemudian 'Jika itu adalah kotak teks, dapatkan konten string kotak teks
stemp=midb(bagian1,instrb(bagian1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf),lenb(bagian1)-instrb(bagian1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
getdata=BtoS(batang)
Lain 'Jika itu adalah file, dapatkan konten biner dari file tersebut
Getdata=midb (bagian1, instrb (bagian1, bncrlf&bncrlf)+lenb (bncrlf&bncrlf), lenb (bagian1)
-instrb(bagian1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
Akhiri Jika
Akhir=pos akhir
Fungsi akhir
Panggil fungsi ini secara langsung dalam program untuk mendapatkan konten file yang diperlukan (atau kotak teks), seperti yang ditunjukkan di bawah ini:
<%
Content=getdata (data, pembagi, posisi)
%>
3) Memperoleh nama file telah dianalisis sebelumnya. Bidang "nama file=" pada aliran data file yang diunggah berisi nama dan jalur absolut file. Secara umum kita hanya perlu mengekstrak nama file pada pathnya. Berikut kode programnya:
<%
namepos=instrrev(B2S(firstline),chr(92)) 'firstline adalah data bagian deskripsi yang diperoleh di atas, chr(92)
cepat"/"
nama file=midb(baris pertama,namepos+1,lenb(baris pertama)-namepos-1) 'Dapatkan nama file
%>
Gunakan ASP untuk langsung mengimplementasikan fungsi unggah file.
Pemrogram ASP tradisional hanya dapat menggunakan objek FILESYSTEMOBJECT untuk memindahkan, menyalin, menghapus, dan operasi lain pada file teks (.txt). yang diperkenalkan sebelumnya dalam artikel ini metode untuk mencapai. Namun, sekarang objek ADO.STREAM di ASP dapat mengoperasikan objek teks dan objek biner secara bersamaan (dapat diunduh di http://www.microsoft.com/data ), dan Anda dapat menggunakannya untuk langsung mengimplementasikan pengunggahan file berfungsi di ASP. Di bawah ini, kami memperkenalkan proses implementasinya.
1) Buka objek STREAM.
Untuk objek SREAM, jika ingin menyimpan file, Anda harus menyimpan seluruh isi objek tersebut. Oleh karena itu, kita harus membuat dua (atau lebih) objek STREAM, salah satunya adalah aliran data sumber, yang menerima data biner awal; yang lainnya adalah aliran data tujuan, yang menerima data yang diproses dari aliran data sumber, dan Terakhir simpan ke file yang diinginkan.
<%
set str=server.CreateObject("ADODB.Stream") 'str adalah aliran data sumber
str.Mode=3 'Atur mode terbuka, 3 dapat dibaca dan ditulis
str.Type=1 'Atur tipe datanya, 1 adalah data biner
str.Buka
set desc=server.CreateObject("ADODB.Stream") 'desc adalah aliran data target
desc.Mode=3
Des.Jenis=1
desc.Buka
%>
2) Menyalin konten antar objek STEAM
Di bagian ini, Anda harus menemukan awal file di aliran data sumber dan mengetahui panjang konten file sebelum Anda dapat menyalin file dengan benar ke aliran data tujuan dan menyimpan file.Kode programnya adalah sebagai berikut:
<%
formdata=Request.BinaryRead(Request.TotalBytes) 'formdata adalah semua konten yang diunggah
str.Tulis formdata 'Tetapkan aliran data sumber
str.position=count-lenb(result)-2 'posisi menunjuk ke awal file
str.copyto desc, lenb(filecotent) 'lenb(filecontent) mewakili panjang file
desc.SaveToFile fullpath,2 'Simpan file dengan path dan nama yang ditentukan oleh fullpath
%>
3) Tutup objek STEAM.
Setelah pemrograman selesai, objek STEAM harus ditutup dan dilepaskan, seperti yang ditunjukkan di bawah ini:
<%
Des. Tutup
Setel deskripsi=tidak ada
Str.Tutup
Tetapkan STR=tidak ada
%>
Ringkasan
Artikel ini memberikan metode untuk mengimplementasikan pengunggahan file secara langsung menggunakan ASP, yang telah diterapkan dengan baik dalam sistem manajemen informasi yang dikembangkan oleh unit ini. Praktek telah membuktikan bahwa metode ini lebih sederhana dan efisien dibandingkan beberapa metode pengunggahan file tradisional.