zoukankan      html  css  js  c++  java
  • .net新手☞文件上传

    上传要解决的问题:
    1、只能上传体积比较小的文件
    2、没有对文件类型和大小进行限制。
    3、没有解决重命名问题。
    文件上传的限制是ASP.NET的一种保护机制,在Web.config中默认配置maxRequestLength为4MB,它可以限制用户故意通过上传大文件对服务器进行拒绝服务攻击。如果上传时间过长就会发生超时,由executionTimeout参数控制。
    我们可以在web.config的<system.web></system.web>之间添加:
    <httpRuntime maxRequestLength="40950" executionTimeout="60"/>
    这样我们就能上传最大为40M,超时为60秒的文件。
    protected void btnUpload_Click(object sender,EventArgs e)
    {
      if(myFile.HashFile)
      {
         string strFileName=myFile.FileName;
         string strFileExt=System.IO.Path.GetExtension();
         if(strFileExt.ToLower()==".rar")
         {
           string strFileNewName=DateTime.Now.ToString("yyyyMMddhhmmss")+strFileExt;
           string strUrl=Request.Url.ToString();
           string strFileDownloadPath=strUrl.Substring(0,strUrl.LastIndexOf('/'))+'/'+strFileNewName;
           int iFileSize=myFile.PostedFile.ContentLength;
           myFile.SaveAs(Server.MapPath(strFileNewName));
           Response.Write(string.Format("文件上传成功<br>下载地址:{0}<br>文件大小:{1}字节<br>",strFileDowmloadPath,iFileSize));
         }
         else
         {
            Response.Write("系统只能接受.rar文件");
         }
      }
      else
      {
         Response.Write("请选择您要上传的文件");
      }
    }
    在这里,说明一下几点:
    1、System.IO.Path.GetExtension()提供了从指定路径字符串提取文件扩展名的方法,但是因为我们还要考虑扩展名中有大小写的情况,所以在进行比较前我们需要使用ToLower()方法把字符串转换成小写形式再进行比较。
    2、SaveAs()方法接受的是文件的物理路径,物理路径就是文件在服务器上实际保存的路径。因此,我们需要使用Server.MapPath()来实现从相对路径到完整物理路径的转换。
    3、而用户下载文件的时候需要获取的文件URL不能是物理路径,需要的是对外的Web地址。我们可以从Request.Url属性中获取当前页面的URL地址,然后取出其中不包括页面名的部分再与文件名进行拼接就能得到完整的文件下载地址。
    4、为了防止上传的文件重复,我们使用当前的时间对文件进行重命名,对于高并发的系统,我们可以在时间后添加用户名。


    对于下载大文件可以参考微软的KnowledgeBase,
    http://support,microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B812406

  • 相关阅读:
    2019-2020-2 网络对抗技术 20175206李得琛 Exp5 信息搜集与漏洞扫描
    2019-2020-4 网络对抗技术 20175206李得琛 Exp4 恶意代码分析
    2019-2020-2 网络对抗技术 20175206李得琛 Exp3 免杀原理与实践
    2019-2020-2 网络对抗技术 20175206李得琛 Exp2 后门原理与实践
    2019-2020-2 网络对抗技术 20175206李得琛 Exp1 PC平台逆向破解
    ucos作业
    实现ls及ls的改进ls的实现
    stat命令的实现-mysate
    2019-2020-1 20175203 20175206 实验五 通讯协议设计
    第八周测试课下补交
  • 原文地址:https://www.cnblogs.com/Mygirl/p/2094829.html
Copyright © 2011-2022 走看看