Asp.net仿网易网盘实现多文件上传

效果如下:

    //UpLoadFile.js  文件

 var pathArray = new Array();//定义存放要上传文件的数组

    var fileType = "";  //存储文件类型
    function CheckForm()
    {
        alert(document.getElementsByName("myFile").length);
        alert(document.getElementById("myFile").value);
    }
    function opFile()
    {
        document.uploderform.myFile.click(); 
    }
 
    //为数组添加remove方法
    Array.prototype.remove = function()
    {
  document.getElementById("stateTD").innerText="未添加任何文件!";
  var newArr = new Array();
        var a = arguments[0];
       
       
        for(i=0;i<this.length;i++)
        {
            if(this[i] != a)
            {
               newArr.push(this[i]);
            }
        }
        return newArr;
    }
  

   
    //为数组添加判断是否有重复值方法
    Array.prototype.hsRepeat = function(n)  
    {  
        if(n<this.length)  
        {
            for(var i=n+1;i<this.length;i++)
             
              if(this[n] == this[i])
                return true;  
              if(i==this.length)
                return this.hsRepeat(++n);  
          
         }  
         else
             return false;  
    }  
     
    //添加上传文件
    function AddFile(filePath)
    {
    if (!checkFileType(filePath))
  {
   alert("请添加合法的图片格式(如:.jpg;.gif;.png;.bmp)");
   return false;
  }
  
  pathArray.push(filePath);
  if(pathArray.hsRepeat(0))
        {
            pathArray.pop(filePath);
            alert("抱歉,该文件已存在,请不要重复添加");
            return false;
        }
        document.getElementById("noFile").style.display="none";  
        //使用DOM创建显示上传文件的单元格
        var newTbody=document.createElement("TBODY");
        var newTr = document.createElement("TR");
        var newTd = document.createElement("TD");
        var newTdType = document.createElement("TD");
        var newTdDel = document.createElement("TD");
       
        //按层次将各个HTML元素添加到页面
        tbFile.appendChild(newTbody);
        newTbody.appendChild(newTr);
      
        newTr.appendChild(newTdType);
        newTr.appendChild(newTd);
        newTr.appendChild(newTdDel);
        //newTr.style.background="blue";
       
        newTdType.innerHTML = "<IMG SRC='Images/" + fileType + ".gif' />";
        newTdType.width=10;
       
        newTd.innerText = filePath;
       
        newTdDel.width=40;
  newTdDel.id="newTdDel"+ objID;
        newTdDel.style.cursor="hand";
        newTdDel.innerHTML="移除<IMG SRC='Images/del.bmp' />"; 
       
        tbFile.appendChild(newTbody);
      
        //为删除列添加事件
        newTdDel.οnclick=function()
        {
   
   pathArray = pathArray.remove(newTd.innerText);
  
   document.getElementById("fileDiv").removeChild(document.getElementById("file" + this.id.substring(8,this.id.length)));
   
   if (pathArray.length==0)
   {
    document.getElementById("noFile").style.display="block"; 
   }
            newTr.removeChild(newTd);
            newTr.removeChild(newTdDel);
            newTbody.removeChild(newTr);
   objID--;
        } 
    
    }

 

//创建FIle对象
 var objID = 1;
 function createFile(obj)
 {
  
  objID++;
  if(AddFile(obj.value)==false)
  {
   return false;
  }
 
  var parent=obj.parentElement;
  var fileHtml='<input name="file'+objID+'" class="files" onChange="createFile(this)" type="file" id="file'+objID+'" size="1">';
  parent.insertAdjacentHTML("beforeEnd",fileHtml);
  
 }
 
 //检查文件格式
 function checkFileType(filePath)
 {
  var fileTypes = filePath.substring(filePath.length-3,filePath.length);
  switch (fileTypes.toLowerCase())
  {
   case "gif": fileType="gif";  return true;
   case "jpg": fileType="jpg";  return true;
   case "png": fileType="png";  return true;
   case "bmp": fileType="bmp";  return true;
   default:return false;
  }
  
 }
    function changeImg(imgName)
    {
        document.getElementById('stateTD').innerHTML = "<img src= images/" + imgName + " />";
       
    } 

 //FileUpLoad.aspx

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="FileUpload.aspx.cs" Inherits="FileUpload" %>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<html xmlns="http://www.w3.org/1999/xhtml">

<head  runat="server">
<title>文件上传</title>
<link rel="stylesheet" href="CSS/style.css" type="text/css" />
<script language="javascript" src="JS/UpLoadFile.js" type="text/javascript"></script>

</head> 
     

    <link href="css/style.css" type="text/css"  rel="stylesheet">
   
<body>
        <form id="uploderform" method="post" action="FileUpload.aspx"  enctype="multipart/form-data" runat="server">
  
      <div id="fileDiv" onMouseOver="this.style.background='url(Images/addFile1.gif)';" onMouseOut="this.style.background='url(Images/addFile.gif)';">
   <input type="file" size="1" runat="server" id="file1" class="files" onChange="createFile(this)" />
  </div>
   <table id="tbFile" class="imgUpLoadTable"  width="100%">
     <tr style="background-color:#D1DDF1;">
    <td width="64" colspan="2">文件路径</td>
    <td width="40">操作</td>
     </tr>
     <tr id="noFile">
      <td id="stateTD">未添加任何文件!</td>
     </tr>
    </table>
   
          
            <asp:Button class="btnUpLoad" ID="filesup"  runat="server" OnClientClick="return fileUpLoad();"  Text="开始上传" />
  
  
  
        </form>
</body>

</html>

//FileUpLoad.aspx.cs 文件

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;


public partial class FileUpload : System.Web.UI.Page
{

    private Boolean SaveFiles()
    {
        //得到File表单元素
        HttpFileCollection files = HttpContext.Current.Request.Files;
        try
        {
            Images images = new Images();
            for (int intCount = 0; intCount < files.Count -1; intCount++)
            {

                HttpPostedFile postedFile = files[intCount];
                string fileName, fileExtension,fileType;

                //获得文件名字
                fileName = System.IO.Path.GetFileName(postedFile.FileName);
                if (fileName != "")
                {
                    //获得文件名扩展
                    fileExtension = System.IO.Path.GetExtension(fileName);
                    string filePath = System.Web.HttpContext.Current.Request.MapPath("upFiles/");
                    filePath += fileExtension.Substring(1,fileExtension.Length-1) + "//";
                    fileType = postedFile.ContentType.Substring(0,5);
                    if (fileType != "image")
                    {
                        continue;
                    }
                    if (!File.Exists(filePath))
                    {
                        Directory.CreateDirectory(filePath);
                    }

                    fileName = DateTime.Now.ToString("yyyymmddhhmmss") + fileName;
                    postedFile.SaveAs(filePath + fileName);
                    MakeSLT(filePath + fileName, filePath + "small_" + fileName);
                    images.Add(new Image(fileName, "upFiles//" + fileExtension.Substring(1, fileExtension.Length - 1) + "//" + fileName, DateTime.Now.ToString(),Session["userName"].ToString().Trim()));
                    //OpFile.filePath = ConfigurationManager.AppSettings["filePath"].ToString();
                    OpFile.filePath = Server.MapPath("./");
                   
                }
               
            }
            images.InsertIntoDB();
            return true;
        }
        catch (System.Exception)
        {
            return false;
        }
    }
    public bool ThumbnailCallback()
    {
        return false;
    }
    //生成缩略图
    private void MakeSLT(string oldImagePath, string newImagePath)
    {
       
        int width = 150;//缩略图的宽度
        int height = 112;// 缩略图的高度
        int level = 100; //缩略图的质量 1-100的范围

        System.Drawing.Image oldimage = System.Drawing.Image.FromFile(oldImagePath);
        System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(width, height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
        Bitmap bm = new Bitmap(thumbnailImage);

   
        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
        ImageCodecInfo ici = null;
        foreach (ImageCodecInfo codec in codecs)
        {
            if (codec.MimeType == "image/jpeg")
                ici = codec;
        }
        EncoderParameters ep = new EncoderParameters();
        ep.Param[0] = new EncoderParameter(Encoder.Quality, (long)level);

        bm.Save(newImagePath, ici, ep);
    }


  
    protected void Page_Load(object sender, EventArgs e)
    {
        if(Session["userName"] != null)
        {
            if (IsPostBack)
            {
                WriteJs("document.getElementById('stateTD').innerText='上传成功!'");
                SaveFiles();
            }

        }
        else
        {
            Response.Write("你还没有登陆");
            Response.End();
        }
    }
    protected void WriteJs(string jsContent)
    {
        this.Page.RegisterStartupScript("writejs", "<script type='text/javascript'>" + jsContent + "</script>");
    }
}
   


 

//Css/Style.css 文件

a:link, a:active, a:visited
{
 color: #000000;
 text-decoration: none;
}
a:hover
{
 color: #4455aa;
 text-decoration: underline;
}
body
{
 background-color: #FFFFFF;
 margin-top: 20px;
 margin-left: 12px;
 margin-right: 10px;
 font-size:12px;
}
.imgUpLoadTable
{
 font-family: "宋体";
 font-size: 12px;
 line-height: 130%;
 border: thin none;
 border-top-width: 1px;
 border-right-width: 1px;
 border-bottom-width: 1px;
 border-left-width: 1px;
 border-right-style: solid;
 border-left-style: solid;
 border-bottom-style:solid;
 border-top-style:solid;
 
 border-top-color: #666666;
 border-right-color: #666666;
 border-bottom-color: #666666;
 border-left-color:  #666666;
 
}
.files
{
 height:20px;
 font-size:12px;
 margin-left:-30px;
 POSITION: absolute;
 left: 13px;
 top: 1px;
 FILTER: Alpha(Opacity=0);
}

.btnUpLoad
{

 border: 1px solid green;
 top:1px;
 
}
input
{
 border: 1px solid green;
}

#fileDiv
{
 white-space: pre;
 height: 22px;
 width: 65px;
 overflow: hidden;
 border-color:#507CD1;
 background-image:url(../Images/addFile.gif);
}
.disTable
{
 border:1px;
 border-collapse: collapse;
}

table
{
border-collapse: collapse; 
}

 

主要功能: 1.多用户注册各自使用,互不干予。 2.在自己的空间中上传多文件及大文件进行在线查看管理,可建多级目录存放。 3.文件目录多级共享,可共享整个用户空间。 4.树状显示系统功能和目录结构,操作方便。 5.界面模板和样式自定义并可由用户在前台选择喜爱的空间风格。 6.共享权限可设好友、所有人、指定人,并可指定共享类别、查看密码、列表修改删除下载等权限。 7.用户的共享目录和文件可自行设置外部空间处固顶和精华。 8.可以按名称、时间、大小、类型、注释、子目录等元素组合搜索文件。 9.文件和目录可进行压缩解压ZIP操作,可以批量上传及批量下载文件。 10.文件提取功能,可同时定义多个文件的提取码,提取码可个性化定义,并可限制下载次数及天数。 11.上传码功能,可定义一个目录的外部允许上传密码,访客可凭此密码上传到此目录。 12.文件转发功能,可将多个文件下载地址通过邮件或短信发送给他人下载,并可限制下载次数及天数。 13.在线编辑文本文件、播放任何影音文件、查看图片内容、对共享文件及目录添加文字注释功能。 14.在线编辑Word,Excel,PowerPoint文件。 15.强大的在线图片编辑功能(缩放,旋转,水印,裁剪)。 16.类似Windows中的图片缩略图预览模式,方便查看图片。 17.注册用户有二级域名空间可以让访客随时访问自己的空间进行文件浏览下载。 18.访客可在外部空间处根据当前权限直接进行添加目录或上传文件。 19.各种文件类型地址点击复制和短地址功能。 20.在空间中上传文件或添加外部网址两种方式。 21.好友功能,可将他人加为好友,并查看对方的指定好友文件及发送短消息。 22.可将好友分组规划,并按分组进行文件共享给指定组的好友。 23.可对自己的所有共享和提取进行查看及管理,批量修改或删除。 24.下载统计功能,可对各个用户下载的每个文件有明确的记录和统计。 25.上传统计功能,可对用户上传的每个文件做记录,监督非法文件。 26.公共目录及公共文件区,显示每个用户共享给所有人的文件及目录列表并可下载。 27.用户可按等级权限自由绑定顶级域名代替外部空间地址,空间地址个性化。 28.用户空间个性化定义公告及标题显示,和对访客留言的查看及管理。 29.站内短信功能,提供收件箱、发件箱、已发送、垃圾箱功能。 30.用户空间中子帐号管理,可建多个相应操作权限的用户登录同一用户空间。 31.网银、支付宝、快钱、财付通,PayNow(台湾)在线支付,用户可任选支付,空间自动续费升级,别人代充,充值卡使用管理。 32.用户积分功能, 可积分兑换金币并可升级空间。 33.前台违法举报,实时对上传内容进行管理。 34.网站留言功能,用户可实时向管理员反馈信息,管理员后台回复。 35.自动过滤内容和禁传非法文件,防止不正当使用。 36.可针对不同等级,不同分组的用户设置进入时公告。 37.批量用户管理操作,群发短信/邮件,可对列表中的所有用户统一一次操作。 38.后台实时查看及管理用户上传的所有文件。 39.强大的用户查找,根据有效期、最后登录时间,审核及锁定,等级及分组查找。 40.共享目录及共享文件查看及管理,未共享的文件不会列出,充份保护用户隐私。 41.用户等级制,可设每个等级的空间、上传大小及其它条数限制。 42.为每个等级设置下载速度上限、开启二级域名及等级费用。 43.用户分组功能,可设定一组用户文件的存放盘符及路径,可前台选择,并可多网站管理。 44.允许/禁止的上传扩展名设定,编辑、查看、播放的扩展名设定功能。 45.注册审核、邮件验证、防重复IP注册、时长注册功能。 46.来访IP限制设定和管理员可登录的IP设定。 47.后台管理员可进行管理权限划分并记录操作日志。 48.系统菜单的后台添加和管理。 49.回收站功能,并可在后台设置自动删除时间。 50.文件共享审核功能,杜绝用户共享非法文件。 51.可直观设定目录、文件、用户、公告的外部调用参数,支持模板调用。 52.导入用户功能,支持ACCESS或Excel中导出的TXT格式信息,分项目一次导入。 53.导出用户功能,可选择条件过滤导出,指定导出项目,导出成txt或Excel格式。 54.页面广告分区添加及管理和客户端广告管理。 55.随时在线整理硬盘和数据库中的数据,保持数据最优化。 56.在线压缩及备份数据库功能。 57.管理员可自行制作文件下载详细信息页,放置各种广告代码。 58.完善的等级防盗链及流量控制功能。 59.支持大文件、多文件、断点续传、进度显示上传。 60.支持直接下载其它网站文件至空间,带详细进度显示功能。 61.可自动开通FTP帐号对应用户空间进行文件管理。 62.仅需为程序目录及用户存放目录设置写入及修改权限,系统更安全。 63.支持分布式多台服务器协同管理。 64.完美兼容firefox等其它非IE内核浏览器。 65.三层架构模式开发,扩充及调用更方便。 66.内含ajax文件操作技术,更加提高用户体验,提高系统运行效率。 67.支持客户端软件管理。 68.分简体版、繁体版、英文版三种版本。 69.可与《桃源相册管理系统》的用户进行整合。 70.标签及用户和文件信息的参数调用,可单独组合设计前台展示页面。 71.自带插件配置接口,支持插件开发和使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值