第一次項目實訓的時候是做的一個基於Silverlight的泡泡點歌系統,我負責做的是管理員部分(做的有點類似於一個用戶端,用WPF寫的),其間用到的有歌曲的上傳和下載功能。
在網上找了很多關於歌曲上傳和下載的源碼,但是它們主要講的是檔案的上傳和下載,而案例部分則是圖片或是其他檔案,講到具體的歌曲檔案的上傳卻很少。而且歌曲檔案的上傳和下載和其他的上傳下載,還是有一定的不同的。自己研究了一天,具體的也大致的有了一定的瞭解。
現在貼上我寫的代碼,希望能幫到大家。
(是作為一個Btton的相應事件上傳的,所以是這樣子的,中間有一些服務的類,用於在資料庫中添加紀錄等等的)
上傳:
private void UpLoadSongBtn_Click(object sender, RoutedEventArgs e) { //選擇上傳檔案上傳到目的目錄。。。。。//現在在資料庫上的添加也是沒有的。。。 musicFileInfo = new FileInfo(FilePathTxt.Text); UploadFileInfo uploadFileInfo = new UploadFileInfo(); uploadFileInfo.Name = musicFileInfo.Name; Stream stream = musicFileInfo.OpenRead(); uploadFileInfo.Size = (int)(stream.Length / 1024); uploadFileInfo.Data = new List<byte[]>(); int len; long rest; while (stream.Position > -1 && stream.Position < stream.Length) { rest = stream.Length - stream.Position; len = (rest > 16384) ? 16384 : (int)rest; byte[] fileData = new byte[len]; stream.Read(fileData, 0, len); uploadFileInfo.Data.Add(fileData); } stream.Close(); ProgressBar1.Maximum = uploadFileInfo.Data.Count; ProgressBar1.Value = 0; UploadFileService.UploadFileServiceClient client = new UploadFileService.UploadFileServiceClient(); bool isAppend = false; for (int i = 0; i < uploadFileInfo.Data.Count; i++) { client.DoUploadFile(musicFileInfo.Name, uploadFileInfo.Data[i], isAppend); ProgressBar1.Value++; isAppend = true; } }
下載:
private void downloadService_DownloadFileCompleted(object sender, DownLoadServiceReference.DownloadFileCompletedEventArgs e) { if (e.Error == null) { SaveFileDialog saveDialog = (SaveFileDialog)e.UserState;//擷取標識的SaveFileDialog using (Stream stream = saveDialog.OpenFile()) { stream.Write(e.Result, 0, e.Result.Length); } MessageBox.Show("下載成功!"); } else { MessageBox.Show("下載失敗!"); } }