上传图片自定义控件FilesUpLoad.ascx

该控件实用方法:

 

| c:programe/...                   |  {浏览}      {上传}

 

页面html:

<%@ Register Src="~/webControl/FilesUpLoad.ascx" TagName="FilesUpLoad" TagPrefix="uc1" %>

<uc1:FilesUpLoad ID="FilesUpLoad1" runat="server" FileSize="200" FileType="jpg|gif|jpeg" IsAutoName="true" MIME="" SaveDirectory="upload/tempPhoto/" />

 

后台代码:

protected void butUp_Click(object sender, EventArgs e)
    {
        url = string.Empty;

        string info = this.FilesUpLoad1.UpSave(out url);

        //文件上传成功(临时文件夹)
        if (info == "true")
        {}
        else
        {}
    }

 

 

控件FilesUpLoad.ascx

 

| c:programe/...                   |  {浏览} 

 

页面htm:

<asp:FileUpload ID="FileUp" style="border:solid #7e9db9 1px;" runat="server" />
<script type="text/javascript">
//检查即将上传的文件是否合法
function <%=ClientId %>isUpPass()
{
    var FileUpID = "<%=ClientId %>";     //取客户端该服务器控件的ID,其在html上显示的ID实际是FilesUpLoad1_FileUp,不是FilesUpLoad1
    var FileName = document.getElementById(FileUpID).value;    //取要上传的文件全路径名
    var LastIndex = FileName.lastIndexOf(".");     //找文件最后的.号的索引位置
   
    if(LastIndex>0)    //存在.号
    {
        var Extension = FileName.substring(LastIndex+1).toLowerCase();
        var FileType="<%=FileType %>";    //允许上传文件的后缀名
        var ExtensionName =  new Array();
        ExtensionName = FileType.toLowerCase().split("|");
       
        //检索在允许上传文件类型的数组中有无该后缀
        for(var temp in ExtensionName)
        {           
            //有返回true
            if(ExtensionName[temp]==Extension)
            {
                return true;
            }
        }       
        alert("你上传的文件格式不正确!只能上传"+FileType+"的格式文件");
        return false;
    }
   
    alert("请正确选择你要上传的文件!");
    return false;
}
</script>

 

后台代码:

#region 成员
    private string fileType;                                                        //限制上传文件的类型(如:jpg|gif|png)
    private string mime = "";                                                  //限制上传文件的MIME信息(如:image/jpeg|image/gif|image/png)
    private int fileSize = 20;                                                      //限制上传文件的大小(以K为单位)
    private string saveDirectory = "uploadfile";                                    //上传文件的保存文件夹(如:upfile/)
    private string name = DateTime.Now.ToString("T").Replace(":","") + DateTime.Now.ToString("ffff");                   //上传文件保存后的文件名称
    private string fileResult = string.Empty;                                       //上传文件的结果(成功还是失败,以及失败原因)
    private bool isAutoName = false;                                                //是否更新上传文件的名称
    private string filePath = string.Empty;                                         //文件上传后的网络地址
    /// <summary>
    /// 获得FileUpLoad的客户端ID
    /// </summary>
    public string ClientId
    {
        get { return FileUp.ClientID; }
    }
    /// <summary>
    /// 限制上传文件的类型(如:jpg|gif|png)
    /// </summary>
    public string FileType
    {
        set { fileType = value.ToLower(); }
        get { return fileType; }
    }
    /// <summary>
    /// 限制上传文件的MIME信息(如:image/jpeg|image/gif|image/png)
    /// </summary>
    public string MIME
    {
        set { mime = value.ToLower(); }
        get { return mime; }
    }
    /// <summary>
    /// 限制上传文件的大小(以K为单位)
    /// </summary>
    public int FileSize
    {
        set { fileSize = value; }
        get { return fileSize; }
    }
    /// <summary>
    /// 上传文件的保存文件夹(如:uploadfile/pic/)
    /// </summary>
    public string SaveDirectory
    {
        set { saveDirectory = value; }
        get { return saveDirectory; }
    }
    /// <summary>
    /// 上传文件保存后的文件名称
    /// </summary>
    public string Name
    {
        set { name = value; }
        get { return name; }
    }
    /// <summary>
    /// 上传文件的结果(成功还是失败,以及失败原因)
    /// </summary>
    public string FileResult
    {
        get { return fileResult; }
    }
    /// <summary>
    /// 文件上传后的网络地址
    /// </summary>
    public string FilePath
    {
        get { return filePath; }
    }
    /// <summary>
    /// 是否更新上传文件的名称(更新后以上传时间命名)
    /// </summary>
    public bool IsAutoName
    {
        set { isAutoName = value; }       
    }
  
    #endregion


    #region 私有方法   
    /// <summary>
    /// 验证上传文件的类型是否合法
    /// </summary>
    /// <param name="ExtensionName">扩展名(如:"jpg")</param>
    /// <param name="Mime">MIME信息(如:"image/jpeg")</param>
    /// <returns></returns>
    private bool ValidateFileType(string ExtensionName, string Mime)
    {
        string[] extensionArray = fileType.Split('|');
        if (extensionArray.Length==0)
        {
            return true;
        }
        foreach (string tempExtensionName in extensionArray)
        {
            if (tempExtensionName.Trim() == ExtensionName)
            {
                char[] fg = { '|'};
                string[] mimeArray = mime.Split(fg, StringSplitOptions.RemoveEmptyEntries);
                if (mimeArray.Length > 0)
                {
                    foreach (string tempMime in mimeArray)
                    {
                        if (tempMime.Trim() == Mime)
                        {
                            return true;
                        }
                    }
                }
                else
                {
                    return true;
                }
            }
        }
        return false;
    }
    /// <summary>
    /// 验证文件大小
    /// </summary>
    /// <param name="ContentLength">文件长度(以B为单位)</param>
    /// <returns></returns>
    private bool ValidateFileSize(int ContentLength)
    {
        if (ContentLength != 0)
        {
            if ((ContentLength / 1024) <= fileSize)
            {
                return true;
            }
            return false;
        }
        return false;
    }
    #endregion

    #region 共有方法
    /// <summary>
    /// 上传保存文件
    /// </summary>
    /// <param name="fileURL">可以得到文件上传后的网络地址</param>
    /// <returns>返回文件上传后的状态字符串(上传成功返回true字符串,不成功直接返回失败原因)</returns>
    public string UpSave(out string fileURL)
    {
        string ServerPath = Request.ServerVariables["APPL_PHYSICAL_PATH"].ToString();       //获取虚拟服务绝对路径
        fileURL = "";           //记录上传文件相对地址
        int fileLength = FileUp.PostedFile.ContentLength;
        if (!FileUp.HasFile)
        {
            return "失败原因:请没有选择上传文件!";           
        }
       
        if (!ValidateFileSize(fileLength))
        {
            return "失败原因:你上传的文件太大了,只能上传" + fileSize + "K的文件,而你现在上传的文件有" + (fileLength / 1024).ToString() + "K";
        }
        string _name = FileUp.PostedFile.FileName.ToLower();
        _name = _name.Substring(_name.LastIndexOf('//') + 1);
        string ExtensionName = _name.Substring(_name.LastIndexOf('.') + 1);     //得到后缀名
        string Mime = FileUp.PostedFile.ContentType.ToLower();                  //得到文件的MIME文件类型
        if (!ValidateFileType(ExtensionName, Mime))
        {
            return "失败原因:你上传的文件类型错误,只能上传后缀名为"+fileType+"类型的文件。";           
        }
        //得到文件名
        DateTime time = DateTime.Now;
        if (!isAutoName)        //是否跟文件换名字
        {
            name = _name ;      //不换名字
        }
        else
        {
            name = name + "." + ExtensionName;  //换名字
        }       
       
        //得到组合路径
        string AppPath = "";
        if (Request.ApplicationPath == null || Request.ApplicationPath == "/")
            //直接安装在   Web   站点
            AppPath = "";
        else
            //安装在虚拟子目录下  
            AppPath = Request.ApplicationPath;


        string path = saveDirectory + time.ToString("yyyy") + "//" + time.ToString("MM") + time.ToString("dd") + "//";

        //得到文件存放地址
        string PathSave = ServerPath + path;
        //创建目录
        if (!System.IO.Directory.Exists(PathSave))
        {
            System.IO.Directory.CreateDirectory(PathSave);
        }
        //保存文件
        try
        {
            string temp = PathSave + name;        //保存文件的绝对路径
            FileUp.PostedFile.SaveAs(ServerPath + path + name);
            fileURL = AppPath+"/"+path.Replace("//", "/") + name;
            return "true";
        }
        catch (Exception ex)
        {
            return "失败原因:" + ex.Message + "。";
        }
    }

    #endregion

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页