Microsoft hesabıyla oturum açın
Oturum açın veya hesap oluşturun.
Merhaba,
Farklı bir hesap seçin.
Birden çok hesabınız var
Oturum açmak istediğiniz hesabı seçin.

GİRİŞ

Bu makalede, karşıdan yüklenebilir bir hepsi bir arada framework örnek anlatılmaktadır. Bu kod örneği nasıl yükleme ve ASP.NET bir uzak veya yerel sunucudan dosyaları indirme gösterir. Örnek paketleri aşağıdaki simgeleri karşıdan yükleyebilirsiniz. Örnek paket hem C# ve Visual Basic .NET dil sürümlerinde kullanılabilir.


Bu kod örneği, kullanıcının isteği etki alanı kapsamında olmayan bir sunucudan dosyaları karşıdan ve karşıya yükleme gösterilmiştir. İşlevsellik HTTP ve FTP iletişim kuralları ile dosyaları aktarmak için sağlanır. Ayrıca, bu kod örneği, bir sunucu üzerindeki dosyaların konumlarını tanımlamak için Tekdüzen Kaynak Tanımlayıcıları (URI) kullanır. Bu kod örneğinde kullanılan anahtar WebClient sınıfı ve WebRequest sınıfı sınıflardır.

Zorluk düzeyi




alternate text

İndirme bilgileri

Bu kod örneği yüklemek için aşağıdaki bağlantılardan birini tıklatın:

Teknik Genel Bakış

Yükleme ve ASP.NET uzak bir sunucudan dosyaları indirme oldukça kolaydır. .NET Framework sınıf kitaplığı bazı basit isteği nesneler sağlar. WebClient sınıfının sunucu etkileşimleri daha kolay anlaşılır bir üst düzey sınıftır. WebRequest nesneleri tarafından WebClient sınıfının isteklerini yapmak için kullanılır. HttpWebRequest ve FtpWebRequest WebRequest sınıfı soyut protokole özgü uygulamaları sınıflardır. HttpWebRequest karşıya yükleme ve dosyaları karşıdan yüklemek için HTTP protokolünün GET ve POST yöntemi uygular. FtpWebRequest karşıya yükleme ve dosyaları karşıdan yüklemek için FTP Protokolü STOR ve RETR yöntemlerini uygular.


Bu kod örneği için ve URI uzak bir sunucudan veri aktarmak için WebClient sınıfının UploadData ve DownloadData yöntemlerini kullanır. UploadData yöntemi HTTP protokolü 's yerine yöntemi ile kullanılır ve "uygulama/x-www-form-urlencoded" Internet medya türü. DownloadData yöntemi bir FileStream nesnesi ile gelen veri akış depolamak ve bayt dizisinin yerel bir dosyaya yazmak için kullanılır.

Örnek genel bakış

Bu örnek kodda, aşağıdaki iki yeni sınıflarının nasıl kullanılacağını açıklayan RemoteFileForm.aspx dosyayı bulabilirsiniz:

  • RemoteUpload

  • RemoteDownload

RemoteUpload sınıfı

RemoteUpload sınıfı, iki alt sınıfları vardır. Bu sınıflar, HttpRemoteUpload ve FtpRemoteUpload' dir. Her iki sınıf RemoteUpload bir oluşturucu kullanın. RemoteUpload sınıfı, bir bayt dizisi, dosya verilerini ve sunucusu URI değerini gerektirir. Ayrıca, karşıya yüklenen dosya için kullanılacak adı belirtebilirsiniz. FtpRemoteUpload sınıfı FtpWebRequest doğrudan (üst düzey WebClient sınıfının yerine) kullanan FTP Protokolü belirli gereksinimlerini işlemek için.


Aşağıdaki sınıf tanımları RemoteUpload sınıfı hakkında daha fazla bilgi için bkz:
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);
}
}

} Karşıya Yükle düğmesini tıklattığınızda RemoteFileForm.cs dosyasında RemoteUpload nesnesinin bir örneği oluşturulur. Sunucunun URI geçirmek ve bir nesne oluşturmak için parametre olarak bir yerel fiziksel dosya yolu.


Not: Dosyayı sunucuda depolamak için kullanılacak bir dosya adı belirtmezseniz, sistem otomatik olarak göre geçerli tarih ve saat sunucusundaki bir dosya adı oluşturur. Tarih ve saat milisaniye için doğru. UploadData yöntemi tamamlandıktan sonra sonuç geçerli sayfada gösterilir.

RemoteDownload sınıfı

RemoteDownload sınıfı, iki alt sınıflarını da vardır. Bu sınıflar, HttpRemoteDownload ve FtpRemoteDownload' dir. RemoteDownload sınıfı, bir URI kaynak ve yerel bir fiziksel dizin gerektirir. RemoteDownload sınıfı, URI kaynak yükleme önce var olduğundan emin olmak için başlatılan denetler. Sunucudan yanıt verilerini içerir ve sonra bu bayt dizisi için bir FileStreamYazar akış sınıf alır. FtpRemoteDownload sınıfı FtpWebRequest doğrudan (üst düzey WebClient sınıfının yerine) kullanan FTP Protokolü belirli gereksinimlerini işlemek için.


Aşağıdaki sınıf tanımları RemoteDownload sınıfı hakkında daha fazla bilgi için bkz:
public class HttpRemoteDownload : RemoteDownload
{
public HttpRemoteDownload(string urlString, string descFilePath)
: base(urlString, descFilePath)
{

}

public override bool DownloadFile()
{
string fileName = System.IO.Path.GetFileName(this.UrlString);
string descFilePathAndName =
System.IO.Path.Combine(this.DescFilePath, fileName);
try
{
WebRequest myre = WebRequest.Create(this.UrlString);
}
catch
{
return false;
}
try
{
byte[] fileData;
using (WebClient client = new WebClient())
{
fileData = client.DownloadData(this.UrlString);
}
using (FileStream fs =
new FileStream(descFilePathAndName, FileMode.OpenOrCreate))
{
fs.Write(fileData, 0, fileData.Length);
}
return true;
}
catch (Exception ex)
{
throw new Exception("download field", ex.InnerException);
}
}
}

public class FtpRemoteDownload : RemoteDownload
{
public FtpRemoteDownload(string urlString, string descFilePath)
: base(urlString, descFilePath)
{

}

public override bool DownloadFile()
{
FtpWebRequest reqFTP;

string fileName = System.IO.Path.GetFileName(this.UrlString);
string descFilePathAndName =
System.IO.Path.Combine(this.DescFilePath, fileName);

try
{

reqFTP = (FtpWebRequest)FtpWebRequest.Create(this.UrlString);
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;


using (FileStream outputStream = new FileStream(descFilePathAndName, FileMode.OpenOrCreate))
using (FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse())
using (Stream ftpStream = response.GetResponseStream())
{
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
}
return true;
}

catch (Exception ex)
{
throw new Exception("upload failed", ex.InnerException);
}
}
}
Not: Nasıl oluşturulacağı ve örnek uygulama dağıtma hakkında daha fazla bilgi için karşıdan yükleme paketinde bulunan Readme.txt dosyasına bakın.


Diller

Bu kod örneği, programlama aşağıdaki dillerde kullanılabilir:

Dil

Proje adı

Visual C#

CSRemoteUploadAndDownload

Visual Basic.NET

VRemoteUploadAndDownload

Kategori teknoloji

  • ASP.NET 2.0

  • ASP.NET 3.5

  • ASP.NET 4.0

Başvurular

WebClient sınıfı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer (MSDN) Web sitesini ziyaret edin:

WebClient sınıfı hakkında genel bilgilerUploadData yöntemi hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

UploadData yöntemi hakkında genel bilgilerDonwloadData yöntemi hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

DonwloadData yöntemi hakkında genel bilgilerFtpWebRequest yöntemi hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

FtpWebRequest yöntemi hakkında genel bilgilerDosyaları FTP karşıya yükleme hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

Nasıl FTP dosyaları karşıya yüklemek için

Daha fazla bilgi

-Bir kod çerçevesinden nedir?

Hepsi bir arada kod çerçevesinden farklı programlama dillerini kullanarak kod örnekleri, çoğu Microsoft geliştirme teknikleri gösterir. Her örnek dikkatle seçilmiş oluşan ve belgelenen bir ortak kodu senaryo göstermek için. -Bir kod çerçevesinden hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:

http://1code.codeplex.com

Çok-bir kod çerçevesinden örneği bulmak nasıl

Çok-bir kod çerçevesinden örneği bulmak için ilgili anahtar sözcükler Microsoft ile birlikte "kbcodefx" için arama Web sitesini destekler. Veya, aşağıdaki Microsoft Web sitesini ziyaret edin:

Hepsi bir arada Framework kod örnekleri

Hızlı yayımlama vazgeçme

Microsoft corporation ve/veya ilgili tedarikçileri, hiçbir açıklamada bulunmaz uygunluğu, güvenilirliği veya bilgi ve ilgili grafiklerin yer doğruluğu hakkında olun. Bu tür bilgileri ve ilgili grafiklerin hiçbir garanti "olduğu gibi" sağlanır. Microsoft ve/veya ilgili tedarikçileri, burada tüm garanti ve koşulları ile ilgili olarak bu bilgiler REDDETMEKTEDİR ve grafikler, tüm zımni garantileri ve satılabilirlik, işçilik belirli bir amaca uygunluk koşulları da dahil olmak üzere ilgili çaba mülkiyet ve ihlal etmeme. Hiçbir durumda MICROSOFT ve/veya tedarikçilerine doğabilecek, sınırlama olmaksızın, kullanım, veri kaybı sorumlu da dahil olmak üzere herhangi bir doğrudan, dolaylı, cezai tazminatlar, arızi, özel, arızi zararların veya zararlardan sorumlu tutulamaz, özellikle kabul veya İşyeri dışında veya herhangi bir şekilde kullanımı ya da bilgi ve ilgili grafikler Microsoft veya herhangi bir tedarikçisinin olsa bile, sözleşme, haksız, ihmal, kusursuz sorumluluk temelinde ya da başka türlü yer kullanma becerisinin bağlı doğan karlar, zararların olasılığı tavsiye.

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.

Bu bilgi yararlı oldu mu?

Dil kalitesinden ne kadar memnunsunuz?
Deneyiminizi ne etkiledi?
Gönder’e bastığınızda, geri bildiriminiz Microsoft ürün ve hizmetlerini geliştirmek için kullanılır. BT yöneticiniz bu verileri toplayabilecek. Gizlilik Bildirimi.

Geri bildiriminiz için teşekkürler!

×