您的位置:首页 > 其它

Silverlight学习笔记六(Silverlight 2.0/3.0/4.0图片上传)

2010-06-13 09:43 393 查看
上一篇做了个本地图片浏览的功能,这次找到图片上传的代码,记录一下。
添加一个“一般处理程序”Handler.ashx
大气象

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

using System.Windows.Browser;
using System.IO;
using System.Windows.Media.Imaging;

namespace SilverlightXML
{
public partial class UploadPic : UserControl
{
public UploadPic()
{
InitializeComponent();
}
void OnClick(object sender, EventArgs args)
{
OpenFileDialog openFileDialog = new OpenFileDialog()
{
Filter = "Jpeg Files (*.jpg)|*.jpg|All Files(*.*)|*.*",
Multiselect = true
};

if (openFileDialog.ShowDialog() == true)//.DialogResult.OK)
{
myList.DataContext = openFileDialog.Files;
}
}

void OnUpLoadClick(object sender, EventArgs args)
{
if (fi != null)
{
WebClient webclient = new WebClient();

webclient.OpenWriteCompleted += new OpenWriteCompletedEventHandler(webclient_OpenWriteCompleted);
webclient.OpenWriteAsync(new Uri("http://localhost:51262/SilverlightXMLSite/Handler.ashx", UriKind.Absolute), "POST", fi.OpenRead());
}
else
{
HtmlPage.Window.Alert("请选取相应图片!!!");
}
}

void webclient_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e)
{
//将图片数据流发送到服务器上
Stream inputStream = e.UserState as Stream;
Stream outputStream = e.Result;

byte[] buffer = new byte[4096];
int bytesRead = 0;

while ((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0)
{
outputStream.Write(buffer, 0, bytesRead);
}
outputStream.Close();
inputStream.Close();
HtmlPage.Window.Alert("图片上传成功!!!");
}

FileInfo fi; //获取选定图片信息//silverlight 2.0中是FileDialogFileInfo

private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if ((e.AddedItems != null) && (e.AddedItems.Count > 0))
{
fi = e.AddedItems[0] as FileInfo;

if (fi != null)
{
using (Stream stream = fi.OpenRead())
{
BitmapImage image = new BitmapImage();
image.SetSource(stream);
myImage.Source = image;
myImage.Visibility = Visibility.Visible;
stream.Close();
}
}
}
}

}

}

估计不能上传大文件,有专门的开源项目,有空找找。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: