Membuat file dari browser adalah cara sederhana untuk meneruskan file dari klien ke server. Dari browser generasi ketiga Netscape dan Microsoft, sebagian besar browser dapat mengunggah file dari server tanpa perlu memberikan pengguna akses atau perangkat lunak akses khusus.
Beberapa komponen ASP dirancang untuk file, misalnya ::
Posting akseptor
(Bagian dari Microsoft SiteServer),
Aspsmartupload (Advantys),
Aspupload (bertahan perangkat),
Sa-FileupSoftware Artisants)
Awal artikel ini akan memberi tahu Anda informasi tentang membuat komponen seperti itu, dan komponen -komponen ini biasanya menggunakan VB, C ++ atau Java.
Masalah komponen -komponen ini adalah bahwa mereka adalah bagian dari produk pihak ketiga daripada ASP standar. Sebagai komponen pihak ketiga, instalasi harus diinstal di server. Ini berarti bahwa DLL harus disalin dan terdaftar di server. Sebagian besar sistem hosting tidak diperbolehkan melakukan pengaturan tersebut di server mereka karena masalah konfigurasi (terutama host virtual) dapat terjadi. Kerugian kedua adalah bahwa kebanyakan dari mereka tidak gratis.
Oleh karena itu, saya perlu menulis kode VBScript untuk menyelesaikan masalah mengunggah file. Ini bukan pilihan yang tak terhindarkan, karena VBScript adalah bahasa skrip, yang hanya dapat menggunakan tipe data varian, dan tidak dapat menyediakan banyak fungsi -dalam mengelola data biner dan array byte.
Untuk memahami proses mengunggah, pertama -tama kita harus tahu bahwa data dikirim dari browser ke server dengan protokol HTTP. Ini berarti bahwa pengiriman formulir "multipart/form-data" (multi-bagian/format-data) diserahkan.
Unggah formulir
Dalam keadaan normal, gunakan formulir HTML untuk meneruskan data dari browser ke server. Formulir ini mungkin berisi domain teks, kotak inspeksi, tombol, dan jenis file kontrol file yang diunggah. Pengguna mengisi dan mengirimkan tabel ini ke server dengan datanya sendiri.
Atribut enableype dalam elemen tabel menentukan jenis konten yang dikodekan oleh set data tabel yang dikodekan ke server. Nilai default dari atribut ENCTYPE adalah "Application/X-WWW-Form-Urlencoded", tetapi ketika mengirimkan sejumlah besar teks ke server, termasuk data dengan karakter non-ASCII atau nomor biner, tipe default ini tidak dapat kompeten. Pada saat ini, tipe konten "multipart/form-data" harus digunakan ketika file mengunggah formulir.
Informasi "multipart/form-data" berisi serangkaian komponen.
Kepala Disposisi Konten, nilai "data-data";
Untuk kontrol jenis file, satu bagian dapat berisi lebih banyak informasi:
Atribut FileName (Nama File) dari jalur asli dan nama file ditentukan pada klien;
Ikuti konten biner atau teks kontrol di belakang kepala ini.
Contoh berikut menggambarkan pengkodean "multipart/form-data".
Jika formulir ini dikirimkan, Anda dapat membaca permintaan ini di server:
----------------------------- 7CF87224D2020A
Disposisi Konten: Formulir-Data; "Email"
[Email dilindungi]
----------------------------- 7CF87224D2020A
Disposisi Konten: Formulir-Data;
Tipe konten: gambar/pjpeg
----------------------------- 7CF87224D2020A
Disposisi Konten: Formulir-Data; "Enter"
Kirimkan kueri
----------------------------- 7CF87224D2020A--
Ketika konten itu ditransmisikan sebagai respons terhadap klien, itu akan ditampilkan. Request.binaryread dan response.binarywrite Metode baca dan tulis data biner.
< / Persen
Response.binarywrite (request.binaryread (request.totalbytes))
%>
Anda dapat melihat pembagian setiap bagian dari respons:
----------------------------- 7CF87224D2020A
Garis batas terakhir mengikuti ' -'.
Setiap kontrol memiliki disposisi konten. Pengenalan atribut nama dikendalikan oleh tabel HTML (email, blob, dan enter. Untuk kontrol jenis file (gumpalan),
Nama file juga merupakan bagian dari header head-disposition, dan header tipe konten memberikan jenis konten data biner.
Skrip yang diunggah
Semua konten di atas harus ditautkan. Ini sangat jelas dalam VB atau C ++ karena ada banyak objek dan metode untuk ini. Dalam VBScript, beberapa fungsi yang disediakan oleh bahasa harus digunakan, dan masalah string variabel dual -byte yang dikodekan yang digunakan dalam VBScript harus diselesaikan.
Fungsi vbscript
Data asli adalah format biner, sehingga fungsi VBScript yang dirancang untuk mengelola data biner harus digunakan. Karena kami menganggap data asli sebagai string byte, midb, instrb, dan fungsi LENB berguna. Tetapi hindari string klasik VBScript, karena mereka adalah string dual -byte -coded, yang tidak cocok untuk terurai menjadi byte tunggal.
Ini adalah satu -satunya fungsi yang digunakan untuk menguraikan byte dalam fungsi VBScript. Metode juga diperlukan untuk mendapatkan string yang dikodekan -byte ganda dari data yang didekomposisi sehingga Anda dapat menggunakan string dalam pengkodean VBScript. Untuk menggunakan string sebagai variabel independen dalam instrb, fungsi diperlukan untuk mengubah string dual -byte menjadi string -byte tunggal.
Bagi saya, saya menulis dua fungsi, getstring () dan getByTestring (), dan kemudian menjelaskannya nanti.
struktur
Data yang didekomposisi disimpan dalam objek Kamus VBScript. Objek kamus adalah objek tabel hash, yang disimpan (kunci, item). Ini adalah bagian dari VBScript dan ASP2.0.
Tentukan objek kamus pertama "Unggah Ulang". Objek ini berisi semua kontrol yang dikirimkan oleh tabel pengunggahan. Kuncinya adalah kontrol kontrol, dan item adalah informasi kontrol yang terkandung dalam objek:
"ControlName1", Kamus Kontrol1
"Controlname2", Kamus Kontrol2
Mewakili objek kamus yang dikendalikan berisi pasangan berikut (kunci, item):
"Nilai", string atau konten biner
"Nama file", nama file yang diunggah
"ContentType", ContentType dari file yang diunggah
Menggabungkan ini, ada contoh -contoh berikut:
UploadRequest: "Email", UngloadControl 1: "Value", [Email Dilindungi]
"Blob", unggah 8: "nama file", c: /upload/200902/file.gif "contentType":
Image/GIF "Nilai": gif89ai?
Objek ini sangat berguna untuk akses dan menggunakan data di masa mendatang.
perincian
Berikut adalah kode untuk dekomposisi, membaca dan merekam kontrol pengunggahan. Proses ini diselesaikan dengan program "BuilduploadRequest".
Sub BuildUploadRequest (RequestBin)
Pertama -tama, Anda harus menemukan garis pemisah.
'Dapatkan Posbeg Batas = 1 Posend = Instrb
Bou
|||