日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Silverlight从客户端上传文件到服务器

發布時間:2025/7/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Silverlight从客户端上传文件到服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里介紹的是一種利用WebClient手動發送Stream到服務器頁面的上傳文件方法。

一、服務器接收文件

這里使用一個ASHX頁面來接收和保存Silverlight傳來的Stream,頁面代碼如下:

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web;namespace Silverlight {/// <summary>/// FileUploadHandler 的摘要說明/// </summary>public class FileUploadHandler : IHttpHandler{public void ProcessRequest(HttpContext context){//獲取上傳參數 - 文件名string fileName = context.Request["FileName"];//獲取上傳的數據流using (Stream inputStream = context.Request.InputStream){try{//數據緩沖區byte[] buffer = new byte[4096];int bytesRead = 0;//準備保存路徑和文件名string filePath = string.Format(@"D:\FileUpload\");//檢查保存路徑是否存在if (!Directory.Exists(filePath)){//不存在進行創建Directory.CreateDirectory(filePath);}//準備寫入文件流using (FileStream fs = File.Create(filePath + fileName, 4096)){//開始循環寫入文件while ((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0){//向文件中寫信息fs.Write(buffer, 0, bytesRead);}}//上傳成功context.Response.ContentType = "text/plain";context.Response.Write("上傳成功");}catch (Exception e){//上傳出錯context.Response.ContentType = "text/plain";context.Response.Write("上傳失敗, 錯誤信息:" + e.Message);}}}public bool IsReusable{get{return false;}}} }

這里保存文件的主要流程就是接收上傳參數,準備保存文件,通過讀取上傳流保存文件內容。

二、客戶端發送文件

客戶端發送文件使用的是WebClient類。

首先建立一個WebClient連接:

//準備上傳連接 WebClient uploadClient = new WebClient(); uploadClient.Headers["Content-Type"] = "multipart/form-data";//連接打開后的操作 uploadClient.OpenWriteCompleted += uploadClient_OpenWriteCompleted; //流寫入完成后的操作 uploadClient.WriteStreamClosed += uploadClient_WriteStreamClosed;//打開上傳連接 uploadClient.OpenWriteAsync(new Uri("", UriKind.Relative), "POST", fileStream);

WebClient打開連接后的處理:

void uploadClient_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e) {//將文件數據流發送到服務器上// e.UserState - 需要上傳的流(客戶端流)using (Stream clientStream = e.UserState as Stream){// e.Result - 目標地址的流(服務端流)using (Stream serverStream = e.Result){byte[] buffer = new byte[4096];int readcount = 0;// clientStream.Read - 將需要上傳的流讀取到指定的字節數組中while ((readcount = clientStream.Read(buffer, 0, buffer.Length)) > 0){// serverStream.Write - 將指定的字節數組寫入到目標地址的流serverStream.Write(buffer, 0, readcount);}}} }

WebClient連接關閉后的處理:

void uploadClient_WriteStreamClosed(object sender, WriteStreamClosedEventArgs e) {//判斷寫入是否有異常if (e.Error != null){MessageBox.Show("上傳失敗!", e.Error.Message.ToString());}else{MessageBox.Show("上傳成功!", "文件已保存!");} }

客戶端這邊主要就是打開連接,然后打開服務器的接收流,然后傳輸文件數據流到服務器。

總結

以上是生活随笔為你收集整理的Silverlight从客户端上传文件到服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。