首页 > 编程语言 >在ASP.NET中上传下载文件实例代码

在ASP.NET中上传下载文件实例代码

时间:2023-11-09 18:24:53浏览次数:34  
标签:文件 ASP string 文件名 上传下载 strAbsolutePath NET 上传 PostedFile

using System.IO;
//检查上传文件不为空

if(File1.PostedFile!=null)

  {    

   string nam = File1.PostedFile.FileName ;

   //取得文件名(抱括路径)里最后一个"."的索引

   int i= nam.LastIndexOf(".");

   //取得文件扩展名

   string newext =nam.Substring(i);

   //这里我自动根据日期和文件大小不同为文件命名,确保文件名不重复

   DateTime now = DateTime.Now;

   string newname=now.DayOfYear.ToString()+File1.PostedFile.ContentLength.ToString();

   //保存文件到你所要的目录,这里是IIS根目录下的upload目录.你可以改变.

   //注意: 我这里用Server.MapPath()取当前文件的绝对目录.在asp.net里""必须用""代替

   File1.PostedFile.SaveAs(Server.MapPath("upload"+newname+newext));    this.HyperLink1.NavigateUrl  ="upload"+newname+newext;    //得到这个文件的相关属性:文件名,文件类型,文件大小

   //fname.Text=File1.PostedFile.FileName;

   //fenc.Text=File1.PostedFile.ContentType ;

   //fsize.Text=File1.PostedFile.ContentLength.ToString();

  }


上传可以用.net里的HTML控件里的File Field的上传控件呀,你拖到窗体上后,你可以右击做为服务器端控件使用,就这样写上你要上传的几句代码就行了,下载直接连接到你要下载的文件就可以下载了把文件上传放到服务器上,直接加超衔接就是下载了.一下是上传文件用到的类:
说明:直接在cs文件里复制粘贴就可以用的.using System;
using System.IO;

using System.Web.UI.HtmlControls;namespace youjian

{

 /// <summary>

 /// UpFile 的摘要说明。

 /// </summary>

 public class UpFile

 {

  public UpFile()

 {

}#region 是否允许该扩展名上传IsAllowedExtension

///<summary>

///是否允许该扩展名上传

///</summary>

///<paramname = "hifile">HtmlInputFile控件</param>

///<returns>允许则返回true,否则返回false</returns>

public bool IsAllowedExtension(HtmlInputFile hifile)

{

 string strOldFilePath = "";

 string strExtension = ""//允许上传的扩展名,可以改成从配置文件中读出

 string[]arrExtension = {".gif",".jpg",".jpeg",".bmp",".png"}; if(hifile.PostedFile.FileName != string.Empty)

 {

 strOldFilePath = hifile.PostedFile.FileName;

 //取得上传文件的扩展名

 strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));

 //判断该扩展名是否合法

  for(int i = 0;i<arrExtension.Length;i++)

  {

   if(strExtension.Equals(arrExtension[i]))

   {

    return true;

   }

  }

 }

 return false;

}

#endregion #region 判断上传文件大小是否超过最大值IsAllowedLength

/// <summary>

/// 判断上传文件大小是否超过最大值

/// </summary>

/// <param name="hifile">HtmlInputFile控件</param>

/// <returns>超过最大值返回false,否则返回true.</returns>

public bool IsAllowedLength(HtmlInputFile hifile)

{

 //允许上传文件大小的最大值,可以保存在xml文件中,单位为KB

 int i = 20;

 //如果上传文件的大小超过最大值,返回flase,否则返回true.

 if(hifile.PostedFile.ContentLength > i * 1024)

 {

  return false;

 }

 return true;

}

#endregion

#region 获取一个不重复的文件名GetUniqueString

/// <summary>

/// 获取一个不重复的文件名

/// </summary>

/// <returns></returns>

public string GetUniqueString()

{

 //得到的文件名形如:20050922101010

 return DateTime.Now.ToString("yyyyMMddhhmmss");

}

#endregion #region 删除指定文件DeleteFile

/// <summary>

/// 删除指定文件

/// </summary>

/// <param name="strAbsolutePath">文件绝对路径</param>

/// <param name="strFileName">文件名</param>

public void DeleteFile(string strAbsolutePath, string strFileName)

{

//判断路径最后有没有/符号,没有则自动加上

 if(strAbsolutePath.LastIndexOf("//") == strAbsolutePath.Length)

 {

  //判断要删除的文件是否存在

  if(File.Exists(strAbsolutePath + strFileName))

  {

   //删除文件

   File.Delete(strAbsolutePath + strFileName);

  }

 }

 else

 {

  if(File.Exists(strAbsolutePath + "//" + strFileName))

  {

   File.Delete(strAbsolutePath + "//" + strFileName);

  }

 }

}

#endregion

#region 上传文件并返回文件名 SaveFile

/// <summary>

/// 上传文件并返回文件名

/// </summary>

/// <param name="hifile">HtmlInputFile控件</param>

/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用/符号亦可</param>

/// <returns>返回的文件名即上传后的文件名</returns>

public string SaveFile(HtmlInputFile hifile,string strAbsolutePath)

{

 string strOldFilePath = "",strExtension = "",strNewFileName = ""//如果上传文件的文件名不为空

 if(hifile.PostedFile.FileName != string.Empty)

 {

  strOldFilePath = hifile.PostedFile.FileName;

  //取得上传文件的扩展名

  strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));

  //文件上传后的命名

  strNewFileName = GetUniqueString() + strExtension;

  //如果路径末尾为/符号,则直接上传文件

  if(strAbsolutePath.LastIndexOf("//") == strAbsolutePath.Length)

  {

   hifile.PostedFile.SaveAs(strAbsolutePath + strNewFileName);

  }

  else

  {

   hifile.PostedFile.SaveAs(strAbsolutePath + "//" + strNewFileName);

  }

 }

 return strNewFileName;

}

#endregion

#region 重新上传文件,删除原有文件CoverFile

/// <summary>

/// 重新上传文件,删除原有文件

/// </summary>

/// <param name="ffFile">HtmlInputFile控件</param>

/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用/符号亦可</param>

/// <param name="strOldFileName">旧文件名</param>

public void CoverFile(HtmlInputFile ffFile,string strAbsolutePath,string strOldFileName)

{

 //获得新文件名

 string strNewFileName = GetUniqueString(); if(ffFile.PostedFile.FileName != string.Empty)

 {

 //旧图片不为空时先删除旧图片

  if(strOldFileName != string.Empty)

  {

   DeleteFile(strAbsolutePath,strOldFileName);

  }

  SaveFile(ffFile,strAbsolutePath);

 }

}

#endregion


C#.net 文件操作:上传 下载 删除 文件列表

1.文件上传
----------
如下要点:
HTML部分:

<form id="form1" runat="server" method="post" enctype="multipart/form-data">

<input id="FileUpLoad" type="file" runat="server"/><br />

后台CS部分 按钮事件

//string strFileFullName = System.IO.Path.GetFileName(this.FileUpLoad.PostedFile.FileName);

//this.FileUpLoad.PostedFile.SaveAs(Server.MapPath("./xmlzip/") + strFileFullName);


2.文件下载
----------

ListBox的SelectedIndexChanged事件 设定相关下载连接

protected void lst_DownLoadFileList_SelectedIndexChanged(object sender, EventArgs e)

{

 try

 {

  string strJS = "window.open('xmlzip/";

  strJS += this.lst_DownLoadFileList.SelectedItem.Text.Trim();

  strJS += "'); return false; ";

  this.imgbtn_DownLoadFile.Attributes.Add("onclick", strJS);

 }

 catch (Exception ex)

 {

  ex.ToString();

 }

}


或者也可以通过 改变Label的Text值 来实现点击后实现文件下载的超级连接

this.Label1.Text = "<a href=/"xmlzip/a.rar/">a.rar</a>"

3.文件删除
---------

string strFilePath = Server.MapPath("../CountryFlowMgr/xmlzip/"+this.lst_DownLoadFileList.SelectedItem.Text.Trim());

if (File.Exists(strFilePath))

{

 File.Delete(strFilePath);

 if (File.Exists(strFilePath))

 {

  Response.Write("ok");

 }

 else

 {

  Response.Write("ok");

 }

}


4.得到文件夹下的文件列表
-----------
#region 得到当前可用的文件列表
/// <summary>
/// 得到当前可用的文件列表
/// </summary>
/// <param name="IsAlert">是否需要弹出提示信息</param>

private void fn_getCurrFileList(bool IsAlert)

{

 try

 {

  //查找xmlzip文件夹下 属于其本身UnitCoding的相关zip文件

  string strXmlZipDirectory = Server.MapPath("../xmlzip/");

  if (Directory.Exists(strXmlZipDirectory))

  {

   //DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory);

   DirectoryInfo di = new DirectoryInfo(strXmlZipDirectory);   FileInfo[] FI = di.GetFiles("*.zip");//只查.zip文件

   if (FI.Length > 0)

   {

    lst_DownLoadFileList.Items.Clear();

    foreach (FileInfo tmpFI in FI)

    {

     ListItem tmpItem = new ListItem();

     tmpItem.Text = tmpFI.Name;

     lst_DownLoadFileList.Items.Add(tmpItem);

    }

    lst_DownLoadFileList.SelectedIndex = 0;

   }

   else

   {

    if (IsAlert)

    {

     Response.write("查无可以下载的文件!");

    }

   }

  

 }

 catch (Exception ex)

 {

  ex.ToString();

 }

}

#endregion


以上就是在ASP.NET中上传下载文件实例代码的详细内容

 

参考文章:http://blog.ncmem.com/wordpress/2023/11/09/%e5%9c%a8asp-net%e4%b8%ad%e4%b8%8a%e4%bc%a0%e4%b8%8b%e8%bd%bd%e6%96%87%e4%bb%b6%e5%ae%9e%e4%be%8b%e4%bb%a3%e7%a0%81/

欢迎入群一起讨论

 

 

标签:文件,ASP,string,文件名,上传下载,strAbsolutePath,NET,上传,PostedFile
From: https://www.cnblogs.com/songsu/p/17822483.html

相关文章

  • Kubernetes日志采集Sidecar模式介绍
    Kubernetes(K8S)作为CNCF(cloudnativecomputingfoundation)的一个核心项目,背靠Google和Redhat的强大社区,近两年发展十分迅速,在成为容器编排领域中领导者的同时,也正在朝着PAAS底座标配的方向发展。日志采集方式日志作为任一系统不可或缺的部分,在K8S的官方文档中也介绍了多种的日......
  • Kubernetes(v1.21)简介
    Kubernetes(v1.21)简介第一章:背景1.1部署方式的演变传统部署时代:①在物理机服务器上运行应用程序。②无法为应用程序定义资源边界。③导致资源分配问题。如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况下,会导致其它应用程序的......
  • m基于Yolov2和GoogleNet深度学习网络的疲劳驾驶检测系统matlab仿真,带GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:  疲劳状态:    2.算法涉及理论知识概要      疲劳驾驶检测系统是一种基于深度学习网络的系统,它结合了Yolov2和GoogleNet模型,用于检测驾驶员的疲劳状态和人脸。疲劳驾驶检测系统主要包括两个部分:人脸检测和疲劳......
  • log4net 使用
    1:创建log4net配置文件log4net.config<?xmlversion="1.0"encoding="utf-8"?><configuration><configSections><sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,l......
  • 机器学习——稠密连接网络DenseNet
    从ResNet到DesNet  稠密块体DenseNet使用了ResNet改良版的“批量规范化、激活和卷积”架构(参见 7.6节中的练习)。我们首先实现一下这个架构。importtorchfromtorchimportnnfromd2limporttorchasd2ldefconv_block(input_channels,num_channels):ret......
  • ASP.NET Ajax exception - Two components with the same id can't be added to the a
    There'sacoupleofexceptionstolookoutforwhenyoustartdevelopingcustomASP.NETAjaxclientcontrols. Theyare:MicrosoftJScriptruntimeerror:Sys.InvalidOperationException:Twocomponentswiththesameid'ctl00_MainContentPlaceHold......
  • BlogEngine.NET 1.5 出现乱码错误
    BlogEngine.NET1.5出现错误:字符串中有乱码。解决方法:(1)删除labels.zh-CN.resx中的所有中文标点符号。(2)或者修改Web.Config<globalizationrequestEncoding="utf-8"responseEncoding="utf-8"culture="auto"uiCulture="auto"/>替换为<globalizationre......
  • .net 温故知新【13】:Asp.Net Core WebAPI 使用依赖注入DI
    一、使用DI注入在之前的文章中已经讲过DI的概念(.net温故知新:【7】IOC控制反转,DI依赖注入),基于控制台程序演示了DI依赖注入的使用,基于Microsoft.Extensions.DependencyInjection完成。那在WebAPI中如何使用依赖注入呢?首先新建一个WebAPI项目WebAPI_DI,框架.net7,其实webapi项目......
  • 表碎片整理时shrink和move如何选择 --高水位回收 转:http://blog.itpub.net/29821
    整理表碎片通常的方法是move表,当然move是不能在线进行的,而且move后相应的索引也会失效,oracle针对上述不足,在10g时加入了shrink,那这个方法能不能在生产中使用呢?     shrink的一个优点是能在线进行,不影响表上的DML操作,当然,并发的DML操作在shrink结束的时刻会出现短暂的block;s......
  • 【ASP.NET】医院检验科实验室信息管理系统源码
    LIS是全院信息化建设的一个重要组成部分,其主要功能是将检验的实验仪器传出的检验数据经分析后,生成检验报告,通过网络存储在数据库中,使医生能够方便、及时的看到患者的检验结果,LIS已经成为现代化医院管理中必不可少的一部分。有助于提高实验室的整体管理水平,减少漏洞,提高检验质量。......