技术开发 频道

在Silverlight 2中使用webclient上传图片

【IT168技术文档】

    在之前的一篇文章中,谈到了使用文件对话框选取并预览本地文件。当时就有一个想法,将这个DEMO扩展成为支持图片上传。所以今天本文会以上个DEMO中的部分代码为原型,在其基础上稍加变动,使其支持图片上传功能。如下图所示:
 

    首先,我们需要建立一个silverlight application ,名称为:UploadFileWeb

    然后在该WEB项目中新建一个Generic Handler,名称为:Handler.ashx

    下面就是它的代码:

 

using System;
using System.Web;
using System.IO;

public class Handler : System.Web.IHttpHandler {

public void ProcessRequest (HttpContext context)
{ //获取上传的数据流
Stream sr = context.Request.InputStream;
try
{
//生成随机的文件名(本DEMO中的上传图片名称也可用参数方法传递过来)
string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
Random rnd = new Random();
string filename = "";
for (int i = 1; i <= 32; i++)
{
filename += chars.Substring(rnd.Next(chars.Length), 1);
}

byte[] buffer = new byte[4096];
int bytesRead = 0;
//将当前数据流写入服务器端文件夹ClientBin下
using (FileStream fs = File.Create(context.Server.MapPath("ClientBin/" + filename + ".jpg"), 4096))
{
while ((bytesRead = sr.Read(buffer, 0, buffer.Length)) > 0)
{
//向文件中写信息
fs.Write(buffer, 0, bytesRead);
}
}

context.Response.ContentType = "text/plain";
context.Response.Write("上传成功");
}
catch (Exception e)
{
context.Response.ContentType = "text/plain";
context.Response.Write("上传失败, 错误信息:" + e.Message);
}
finally
{
sr.Dispose();
}

}

public bool IsReusable {
get {
return false;
}
}
}

0
相关文章