Silverlight上传图片到网站目录并显示
来源:互联网 发布:js视频如何拉动进度条 编辑:程序博客网 时间:2024/06/06 03:09
1.Silverlight只能显示网站项目目录的ClientBin目录下的图片,也可以在ClientBin目录下建子文件夹进行显示
,例如ClientBin/images目录
2.Silverlight上传图片一种方法是使用WebClient,服务端使用一般处理程序.ashx
参考代码:
*******************************Silverlight客户端代码*****************************************************
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.Navigation;
using System.Windows.Media.Imaging;
using System.IO;
namespace Silverligh图片相册
{
public partial class AddProduct : Page
{
public string mStrImageFileName = "";
public FileInfo mObjImageFileInfo = null;
private wcfMain.IwcfMainClient client = null;
OpenFileDialog dlg = null;
public AddProduct()
{
InitializeComponent();
client = ServerManager.GetPox();
client.AddProductCompleted += new EventHandler<wcfMain.AddProductCompletedEventArgs>(client_AddProductCompleted);
}
void client_AddProductCompleted(object sender, wcfMain.AddProductCompletedEventArgs e)
{
if (e.Error == null)
{
Dictionary<string, string> dicGet = e.Result;
if (dicGet["Result"] == "OK")
{
MessageBox.Show("添加产品成功!");
mStrImageFileName = "";
mObjImageFileInfo = null;
txtProductName.Text = "";
imgSource.Source = new BitmapImage(
new Uri("", UriKind.Relative));
}
else
{
MessageBox.Show("添加产品失败!" + dicGet["Result"]);
}
}
else
{
MessageBox.Show(e.Error.InnerException.ToString());
}
}
// 当用户导航到此页面时执行。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
}
private void btnExit_Click(object sender, RoutedEventArgs e)
{
SessionManager.Session["Login"] = "N";
this.Content = new ShowPicMain();
}
private void btnSelImage_Click(object sender, RoutedEventArgs e)
{
//这里在客户端显示图片,并显示在Image控件中
dlg = new OpenFileDialog();
dlg.Multiselect = false;
dlg.Filter = "JPG 图片 (*.jpg)|*.jpg|PNG 图片 (*.png)|*.png";
bool? result = dlg.ShowDialog();
if (result != null && result == true)
{
mStrImageFileName = dlg.File.Name;
mObjImageFileInfo = dlg.File;
BitmapImage image = new BitmapImage();
image.SetSource(dlg.File.OpenRead());
imgSource.Source = image;
dlg.File.OpenRead().Close();
}
}
#region 关键代码,使用WebClient调用一般处理程序,上传图片
private void uploadImage(string fileName, Stream data)
{
Uri uri = new Uri(string.Format("/UploadImageHandler.ashx?filename={0}", fileName), UriKind.Relative);
WebClient client = new WebClient();
client.OpenWriteCompleted += delegate(object s, OpenWriteCompletedEventArgs e)
{
uploadData(data, e.Result);
e.Result.Close();
data.Close();
};
client.OpenWriteAsync(uri);
}
#endregion
private void uploadData(Stream input, Stream output)
{
//这里要注意,传入的输入流不能是关闭的,否则不能成功上传图片
byte[] buffer = new byte[4096];
int bytes;
while ((bytes = input.Read(buffer, 0, buffer.Length)) != 0)
{
output.Write(buffer, 0, bytes);
}
}
private void btnAddProduct_Click(object sender, RoutedEventArgs e)
{
if (txtProductName.Text!="")
{
client.AddProductAsync(txtProductName.Text, "/images/" + mStrImageFileName);
}
else
{
MessageBox.Show("产品名称和图片不能为空!");
}
}
private void btnUpload_Click(object sender, RoutedEventArgs e)
{
if (mStrImageFileName != "" && mObjImageFileInfo != null)
{
uploadImage(mStrImageFileName, mObjImageFileInfo.OpenRead());
MessageBox.Show(string.Format("上传成功!{0}",
mStrImageFileName));
}
}
private void btnReturn_Click(object sender, RoutedEventArgs e)
{
this.Content = new ShowPicMain();
}
}
}
*******************************一般处理程序服务端代码*****************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
namespace Silverligh图片相册.Web
{
/// <summary>
/// UploadImageHandler 的摘要说明
/// </summary>
public class UploadImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//关键代码,把图片存储在网站的ClientBin/images目录下
context.Response.ContentType = "text/plain";
string filename = context.Request.QueryString["filename"].ToString();
string strSaveFileName = context.Server.
MapPath("~/ClientBin/images/" + filename);
if (File.Exists(strSaveFileName))
{
File.Delete(strSaveFileName);
}
using(FileStream fs = File.Create(strSaveFileName))
{
SaveImage(context.Request.InputStream, fs);
}
}
private void SaveImage(Stream stream, FileStream fs)
{
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)
{
fs.Write(buffer, 0, bytesRead);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
- Silverlight上传图片到网站目录并显示
- php上传图片到mysql并显示
- php上传图片到本地并显示
- 上传图片到指定位置并显示
- 图片上传并保存到数据库以及显示图片
- vue上传图片到数据库并显示到页面
- 图片上传并显示
- 图片上传到数据库并显示(C#+Access)
- struts2 图片上传到服务器并显示在页面
- 实现图片上传并显示到浏览器功能
- asp.net 图片批量上传预览,在Silverlight页面中读取并滚动显示
- ssh上传并显示图片
- jsp 上传图片并显示
- ssh上传并显示图片
- html5 上传图片并显示
- html上传图片并显示
- [前端] 上传图片并显示
- struts2上传图片后并显示图片
- 一个PostgreSQL存储过程的例子:
- 解决 asp.net调用office 2007 DCOM 权限问题
- 设为桌面图标 PHP代码 详解
- 3.WSDL、服务端已经开发好,客户端静态调用服务端开放的服务:解释批处理WSDL-SQUARED.CMD生成的类
- Objc 系统宏/表达式,调试使用
- Silverlight上传图片到网站目录并显示
- Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
- the difference of QRectF&QRect
- mysql 更改数据库引擎
- Linux下常用文件解压(包括rpm、deb包)
- 拖放
- Silverlight中WCF在添加引用中不能发现的问题
- Initial RAM disk(initrd)
- Python运算符重载