才用什么方法可以获取上传文件中已上传的部分的大小呢?怎么知道正在传输的速度?

解决方案 »

  1.   

    给楼主一个我自己写的文件上传的一个类,希望对你有帮助:using System;
    using System.IO;
    using System.Drawing;
    using System.Text;
    using System.Drawing.Drawing2D;
    using Components;namespace Components
    {
    /// <summary>
    /// 文件上传及删除类。
    /// </summary>
    public class UploadFile
    {
    public UploadFile()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } private all2car.Components.ReduceImg minImg;

    /// <summary>
    /// 上传图片(不生成缩略图)
    /// </summary>
    /// <param name="imgFile">上传文件控件</param>
    /// <param name="fileN">要生成的文件名</param>
    /// <param name="fileDir">路径(服务器绝对路径)</param>
    /// <param name="FileSize">文件大小(为Bit,102400为100K)</param>
    /// <returns>返回文件</returns>
    public string ulImg(System.Web.UI.HtmlControls.HtmlInputFile imgFile,string fileN,string fileDir,int FileSize)
    {
    string uploadFile="";
    string filename,fileExt;
    try
    {
    if(imgFile!=null)
    {
    filename = imgFile.PostedFile.FileName;
    fileExt = System.IO.Path.GetExtension(filename);
    if(fileExt.ToLower()==".jpg" || fileExt.ToLower()==".gif")
    {
    //必须为gif或gif图片
    if(imgFile.PostedFile.ContentLength<=FileSize)
    {
    //文件不能大于FileSize
    imgFile.PostedFile.SaveAs(fileDir+fileN+fileExt);
    uploadFile = fileN+fileExt;
    }
    }
    }
    }
    catch(Exception err)
    {
    all2car.Components.Error.WriteLog(err.ToString());
    } return uploadFile;
    }

    /// <summary>
    /// 上传图片并生成缩略图
    /// </summary>
    /// <param name="imgFile">上传文件控件</param>
    /// <param name="fileN">要生成的文件名</param>
    /// <param name="fileDir">路径(服务器绝对路径)</param>
    /// <param name="FileSize">文件大小(为Bit,102400为100K)</param>
    /// <param name="ImgSize">缩略图尺寸</param>
    /// <returns>返回生成的缩略图文件名</returns>
    public string ulReduImg(System.Web.UI.HtmlControls.HtmlInputFile imgFile,string fileN,string fileDir,int FileSize,int ImgSize)
    {
    string uploadFile="";
    string filename,fileExt;
    try
    {
    if(imgFile!=null)
    {
    filename = imgFile.PostedFile.FileName;
    fileExt = System.IO.Path.GetExtension(filename);
    if(fileExt.ToLower()==".jpg" || fileExt.ToLower()==".gif")
    {
    //必须为gif或gif图片
    if(imgFile.PostedFile.ContentLength<=FileSize)
    {
    //文件不能大于FileSize
    imgFile.PostedFile.SaveAs(fileDir+fileN+fileExt);
    imgFile.PostedFile.SaveAs(fileDir+fileN+fileExt);
    minImg = new ReduceImg(fileDir+fileN+fileExt);
    minImg.Size = ImgSize;
    minImg.CreateSmallImg();
    uploadFile = "s_"+fileN+fileExt;
    }
    }
    }
    }
    catch(Exception err)
    {
    all2car.Components.Error.WriteLog(err.ToString());
    } return uploadFile;
    } /// <summary>
    /// 上传图片并生成缩略图,这里生成二张图,一张小的缩略图,一张大一点的缩略图
    /// </summary>
    /// <param name="imgFile">上传文件控件</param>
    /// <param name="fileN">要生成的文件名</param>
    /// <param name="fileDir">路径(服务器绝对路径)</param>
    /// <param name="FileSize">文件大小(为Bit,102400为100K)</param>
    /// <param name="ImgSize">缩略图尺寸</param>
    /// <param name="MidImgSize">大一点缩略图尺寸</param>
    /// <returns>返回生成的缩略图文件名</returns>
    public string ulReduImg(System.Web.UI.HtmlControls.HtmlInputFile imgFile,string fileN,string fileDir,int FileSize,int ImgSize,int MidImgSize)
    {
    string uploadFile="";
    string filename,fileExt;
    try
    {
    if(imgFile!=null)
    {
    filename = imgFile.PostedFile.FileName;
    fileExt = System.IO.Path.GetExtension(filename);
    if(fileExt.ToLower()==".jpg" || fileExt.ToLower()==".gif")
    {
    //必须为gif或gif图片
    if(imgFile.PostedFile.ContentLength<=FileSize)
    {
    //文件不能大于FileSize
    imgFile.PostedFile.SaveAs(fileDir+fileN+fileExt);
    imgFile.PostedFile.SaveAs(fileDir+fileN+fileExt);
    minImg = new ReduceImg(fileDir+fileN+fileExt);
    minImg.Size = ImgSize;
    minImg.CreateSmallImg();
    minImg.Size = MidImgSize;
    minImg.SetMidPic = true;
    minImg.CreateSmallImg();
    uploadFile = "s_"+fileN+fileExt;
    }
    }
    }
    }
    catch(Exception err)
    {
    all2car.Components.Error.WriteLog(err.ToString());
    } return uploadFile;
    }

    /// <summary>
    /// 上传文件
    /// </summary>
    /// <param name="fileFile">上传文件控件</param>
    /// <param name="fileN">文件名</param>
    /// <param name="fileDir">文件路径(服务器绝对路径)</param>
    /// <param name="FileSize">文件大小限制(为Bit,102400为100K)</param>
    /// <returns>返回文件名</returns>
    public string ulFile(System.Web.UI.HtmlControls.HtmlInputFile fileFile,string fileN,string fileDir,int FileSize)
    {
    string uploadFile="";
    string filename,fileExt;
    try
    {
    if(fileFile!=null)
    {
    filename = fileFile.PostedFile.FileName;
    fileExt = System.IO.Path.GetExtension(filename);
    if(fileExt.ToLower()!=".aspx" && fileExt.ToLower()!=".exe" && fileExt.ToLower()!=".asp" && fileExt.ToLower()!=".mpsx" && fileExt.ToLower()!=".ascx" && fileExt.ToLower()!=".bat")
    {
    //不可以上传aspx、asp、mpsx、ascx、bat文件
    if(fileFile.PostedFile.ContentLength<=FileSize)
    {
    //文件不能大于FileSize
    fileFile.PostedFile.SaveAs(fileDir+fileN+fileExt);
    uploadFile = fileN+fileExt;
    }
    }
    }
    }
    catch(Exception err)
    {
    all2car.Components.Error.WriteLog(err.ToString());
    } return uploadFile;
    } /// <summary>
    /// 上传指定格式的文件
    /// </summary>
    /// <param name="imgFile">上传文件控件</param>
    /// <param name="fileN">文件名</param>
    /// <param name="fileDir">文件路径(服务器绝对路径)</param>
    /// <param name="FileSize">文件大小限制(为Bit,102400为100K)</param>
    /// <param name="Extension">指定文件的扩展名,比如多个用“|”隔开,例:"jpg|gif"</param>
    /// <returns>返回文件名</returns>
    public string uploadSpecifyFile(System.Web.UI.HtmlControls.HtmlInputFile imgFile,string fileN,string fileDir,int FileSize,string Extension)
    {
    string uploadFile="";
    string filename,fileExt;
    bool IsFileFormatOk = false;
    try
    {
    if(imgFile!=null)
    {
    filename = imgFile.PostedFile.FileName;
    fileExt = System.IO.Path.GetExtension(filename);
    string[] s = Extension.Split('|');
    foreach(string StrVal in s)
    {
    if(fileExt.ToLower().Equals("."+StrVal.Trim().ToLower()))
    {
    IsFileFormatOk = true;
    break;
    }
    }
    if(IsFileFormatOk)
    {
    //必须上传与Extension相同扩展名的文件
    if(imgFile.PostedFile.ContentLength<=FileSize)
    {
    //文件不能大于FileSize
    imgFile.PostedFile.SaveAs(fileDir+fileN+fileExt);
    uploadFile = fileN+fileExt;
    }
    }
    }
    }
    catch(Exception err)
    {
    all2car.Components.Error.WriteLog(err.ToString());
    } return uploadFile;
    }
    /// <summary>
    /// 删除文件
    /// </summary>
    /// <param name="FileName">文件路径(绝对路径,如:d:/website/testweb/photo/i.gif)</param>
    /// <returns>返回true为删除成功,返回false删除失败</returns>
    public bool DelFile(string FileName)
    {
    bool ReturnVal = false;
    try
    {
    System.IO.File.Delete(FileName);
    ReturnVal = true;
    }
    catch(Exception err)
    {
    all2car.Components.Error.WriteLog(err.ToString());
    } return ReturnVal;
    }

    }
    }
      

  2.   

    谢谢楼上lwlmaomao() 的例子,上传限制的文件,及生成缩略图我都知道,我想知道的是用什么方法可以获取上传文件中已上传的部分的大小呢?怎么知道正在传输的速度?
      

  3.   

    不知道,我只知道用Remoting怎么做