日期:2014-05-17 浏览次数:20929 次
第一次项目实训的时候是做的一个基于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("下载失败!"); } }