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();
}
}
}
}
}
}
估计不能上传大文件,有专门的开源项目,有空找找。
添加一个“一般处理程序”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();
}
}
}
}
}
}
估计不能上传大文件,有专门的开源项目,有空找找。
相关文章推荐
- Silverlight学习笔记五( 在Silverlight 2.0/3.0/4.0 中使用OpenFileDialog浏览本地图片)
- Android webview上传图片(适配3.0,4.0,5.0,6.0)
- Android webview上传图片(适配3.0,4.0,5.0,6.0)
- .NET Framework 1.1、2.0、3.0、3.5、4.0各版本新增功能
- 百度UEditor在线编辑器上传图片提示网络连接错误,请检查配置后重试 asp.net 4.0
- AFNetworking 2.0 图片上传的疑惑
- Android 1.5 1.6 2.0 2.1 2.2 2.3 3.0,4.0的区别
- Asp.net 2.0 无刷新图片上传+回显
- Silverlight中的拖拽实现的图片上传---1
- swift3.0图片保存到沙盒-从沙盒读取图片显示-从沙盒上传到服务器
- 在Silverlight 3.0的ToolTipService中显示数据库的图片
- Android Retrofit 2.0框架上传图片,视频解决方案
- 使用Python编写客户端 上传文字or图片至新浪微博 by OAuth 2.0
- 利用AF3.0+ 上传多张图片(转载)
- AFNetworking 2.0+ 上传单张/多张图片
- Retrofit2.0+ .Net MVC4(WebApi) 上传多张图片
- AFNetWorking3.0 上传图片 和 简单封装
- 【两化融合】工业4.0视角看两化融合:两化融合发展水平对应工业2.0向3.0过渡
- asp.net 2.0中判断上传的图片是否符合规格
- 从Silverlight 2.0到3.0 的应用程序兼容性问题