none
MS Knowledge Base: Bagaimana cara untuk meng-upload and download files dari remote server di ASP.NET? (Part 1)

    General discussion

  • Artikel ini menjelaskan tentang sampel All-In-One Code Framework yang tersedia untuk di-download. Sampel kode ini menjelaskan cara untuk meng-upload dan download file dari remote server atau lokal di ASP.NET. Baik bahasa C # dan Visual Basic.NET bisa didapat dari paket sampel yang tersedia.

    Sampel kode ini menunjukkan bagaimana untuk meng-upload dan download file dari server yang tidak dalam lingkup user’s request domain. Fungsi yang disediakan untuk mentransfer file bisa dilakukan melalui protokol HTTP dan FTP. Adapun sampel kode ini menggunakan Uniform Resource Identifier (URIs) untuk mengidentifikasi lokasi file pada server. Kelas-kelas utama yang digunakan dalam kode sampel adalah kelas WebClient dan WebRequest. 

     

    Tingkat Kesulitan

                Menengah

    Pembahasan Teknis

    Sangat mudah untuk meng-upload dan download file dari remote server di ASP.NET. .NET Framework class library menyediakan beberapa request objek. Kelas WebClient adalah kelas tingkat tinggi yang membuat interaksi di server menjadi lebih mudah. Objek WebRequest digunakan oleh kelas WebClient untuk membuat sebuah request. Kelas HttpWebRequest dan FtpWebRequest adalah protokol tertentu yang diimplementasi khusus dari kelas abstrak WebRequest. HttpWebRequest mengimplementasikan metode GET dan POST dari protokol HTTP untuk meng-upload dan download file. FtpWebRequest menerapkan metode Stor dan RETR dari protokol FTP untuk meng-upload dan download file.

    Sampel kode ini menggunakan metode UploadData dan DownloadData dari kelas WebClient untuk mentransfer data ke dan dari remote server URI. Metode UploadData digunakan dengan metode PUT dari protokol HTTP dan "application / x-www-form-urlencoded" Internet media type. Metode DownloadData digunakan dengan objek FILESTREAM untuk menyimpan data stream yang masuk dan menulis array byte ke file lokal.

     

    Contoh Sampel


    Dalam
    contoh sampel, anda akan menemukan file RemoteFileForm.aspx yang menjelaskan cara menggunakan dua kelas baru berikut:

     

    ·         RemoteUpload

    ·         RemoteDownload


    RemoteUpload class


    Kelas RemoteUpload memiliki dua
    kelas anak. Kelas-kelas ini adalah HttpRemoteUpload dan FtpRemoteUpload. Kedua kelas ini menggunakan konstruktor RemoteUpload. Kelas RemoteUpload memerlukan array byte dari file data dan server URI. Anda juga dapat menentukan nama yang akan digunakan untuk file yang diupload. Kelas FtpRemoteUpload menggunakan FtpWebRequest secara langsung (daripada menggunakan kelas WebClient tingkat yang lebih tinggi) untuk menangani kebutuhan spesifik dari protokol FTP.

    Lihat definisi
    kelas berikut untuk informasi lebih lanjut tentang kelas RemoteUpload:

     

    public class HttpRemoteUpload : RemoteUpload
        {
            public HttpRemoteUpload(byte[] fileData, string fileNamePath, string urlString)
                : base(fileData, fileNamePath, urlString)
            {
     
            }
     
            public override bool UploadFile()
            {
                byte[] postData;
                try
                {
                    postData = this.FileData;
                    using (WebClient client = new WebClient())
                    {
                        client.Credentials = CredentialCache.DefaultCredentials;
                        client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                        client.UploadData(this.UrlString, "PUT", postData);
                    }
     
                    return true;
                }
                catch (Exception ex)
                {
                    throw new Exception("Failed to upload", ex.InnerException);
                }
     
            }
        }
     
     public class FtpRemoteUpload : RemoteUpload
        {
            public FtpRemoteUpload(byte[] fileData, string fileNamePath, string urlString)
                : base(fileData, fileNamePath, urlString)
            {
     
            }
     
            public override bool UploadFile()
            {
                FtpWebRequest reqFTP;
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(this.UrlString);
                reqFTP.KeepAlive = true;
                reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
                reqFTP.UseBinary = true;
                reqFTP.ContentLength = this.FileData.Length;
                
                int buffLength = 2048;
                byte[] buff = new byte[buffLength];
                MemoryStream ms = new MemoryStream(this.FileData);
                
                try
                {
                    int contenctLength;
                    using (Stream strm = reqFTP.GetRequestStream())
                    {
                        contenctLength = ms.Read(buff, 0, buffLength);
                        while (contenctLength > 0)
                        {
                            strm.Write(buff, 0, contenctLength);
                            contenctLength = ms.Read(buff, 0, buffLength);
                        }
                    }
     
                    return true;
                }
                catch (Exception ex)
                {
                    throw new Exception("Failed to upload", ex.InnerException);
                }
            } 
        } 

    Dalam file RemoteFileForm.cs, bila anda klik tombol Upload, sebuah instance dari objek RemoteUpload dibuat dan akan melewati server URI dan path file lokal sebagai parameter untuk membuat objek.

    Catatan Jika anda tidak menetapkan nama file yang digunakan untuk menyimpan file di server, sistem akan secara otomatis menghasilkan nama file sesuai dengan tanggal dan waktu pada server. Tanggal dan waktu tersebut memiliki tingkat keakuratan sampai millisecond. Setelah metode UploadData selesai, hasilnya akan ditampilkan pada halaman yang dibuka saat itu.

    Berlanjut ke MS Knowledge Base: Bagaimana cara untuk meng-upload and download files dari remote server di ASP.NET? (Part 2)


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Tuesday, May 31, 2011 3:45 AM
    Moderator

All replies

  • Hal yang juga harus diperhatikan adalah batasan file upload yang diberikan oleh ASP.NET hanay sebesar 4 MB. Apabila hendak mengupload lebih dari itu maka konfigurasi Web.config dapat dilakukan. Contoh dibawah adalah mengupload 20 MB dalam satu sesi upload ASP.NET

     

    <httpRuntime executionTimeout="240" maxRequestLength="2147483647" />


    ridife | http://ridilabs.net
    Wednesday, June 08, 2011 11:46 PM