ASP.NET 通过 Web Service 上传

作者: 来源: 日期:2010-4-16

客户端

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;   
    }   
}  

 

相关文章