客户端
protected void btnOk_Click(object sender, EventArgs e)
{
Boolean fileOk = false;
if (fileUpload.HasFile)
{
//取得文件扩展名并转换成小写
string fileExtension = System.IO.Path.GetExtension(fileUpload.FileName).ToLower();
//限定只能上传图片
string[] allowExtension = { ".jpg", ".gif" };
//对上传的文件类型进行一个个匹对
for (int i = 0; i < allowExtension.Length; i++)
{
if (fileExtension == allowExtension[i])
{
fileOk = true;
break;
}
}
if (!fileOk)
{
Page.RegisterClientScriptBlock("error","<script>alert('只能上传图片文件');</script>");
return;
}
else
{
//将文件转换成字节数组
byte[] b = FileToByte(fileUpload.PostedFile.FileName);
//调用webservice的方法上传
imgService.upload upload = new imgService.upload();
//返回结果
string result = upload.UploadFile(b, Guid.NewGuid()+fileExtension);
Response.Write(result);
//if (result)
//{
// Page.RegisterClientScriptBlock("ok","<script>alert('上传成功');</script>");
//}
//else
//{
// Page.RegisterClientScriptBlock("error","<script>alert('上传失败');</script>");
//}
}
}
else
{
Page.RegisterClientScriptBlock("error","<script>alert('请选择要上传的图片文件');<>");
}
}
//将文件转换为字节数组
public byte[] FileToByte(string path)
{
FileStream sr = File.OpenRead(path);
byte[] data = new byte[sr.Length];
int offset = 0;
int remaining = data.Length;
//只要有剩余的字节就不停的读
while(remaining > 0)
{
int read = sr.Read(data,offset,remaining);
if(read <= 0)
{
break;
}
//减少剩余的字节数
remaining -= read;
//增加偏移量
offset += read;
}
sr.Close();
return data;
}
Web Service
public string UploadFile(byte[] fs, string FileName)
{
string path = Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings["imgPath"].ToString());
try
{
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
//定义并实例化一个内存流,以存放提交上来的字节数组
MemoryStream m = new MemoryStream(fs);
//定义实际文件对象,保存上载的文件
FileStream f = new FileStream(path + "\\" + FileName, FileMode.Create);
//把内存里的数据写入物理地址
m.WriteTo(f);
//释放资源
m.Close();
f.Close();
f = null;
m = null;
return "";
}
catch(Exception ex)
{
return ex.Message;
}
}