首页 > 编程语言 >ASP.NET实现文件上传和下载

ASP.NET实现文件上传和下载

时间:2023-09-10 16:46:42浏览次数:42  
标签:文件 ASP System using NET 上传 Response 下载

 

###### 本文的开发配置 ######

.NET版本:.NET Framework 4.0

开发环境:Microsoft Visual Studio 2013

浏览器:IEChromeFireFox等都行

 

1、搭建网站结构

建立一个新的目录存放网页文件,用VS2013在这个目录里面建一个网站项目(VS2013怎么新建网站项目?)

新建两个目录UploadFile和DownloadFile,分别用于保存用户上传到服务器的文件和供用户从服务器下载的文件

 

2、编写网页文件

创建一个Web窗体Default,包含Default.aspx和Default.aspx.cs两个文件,源代码如下:

[Default.aspx]

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title>

</head>

<body><form id="form1" runat="server"><table width="400" border="0" cellspacing="0" cellpadding="0"><tr><td><!-- 这里是文件上传的控件 --><asp:FileUpload ID="FileUpload1" runat="server" /><asp:Button ID="ButtonUpload" runat="server" Text="确认上传" OnClick="ButtonUpload_Click" /></td></tr><tr><td><!-- 这是个用来下载文件的按钮 --><asp:Button ID="ButtonDownload" runat="server" Text="下载文件" OnClick="ButtonDownload_Click" /></td></tr></table></form>

</body>

</html>

[Default.aspx.cs]

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;using System.IO;   // 记得加这个引用,文件下载要用到public partial class _Default : System.Web.UI.Page

{// 文件路径参数private string UPLOAD_DIRECTORY = "UploadFile/";      // 上传到服务器的文件放这里private string DOWNLOAD_DIRECTORY = "DownloadFile/";  // 供用户下载的文件放这里// 页面加载protected void Page_Load(object sender, EventArgs e){}/** 函数名:ButtonUpload_Click* 作用:响应用户上传文件* 参数:object sender, EventArgs e* 返回:void*/protected void ButtonUpload_Click(object sender, EventArgs e){// 当选择好上传文件时if (FileUpload1.HasFile){// 确定上传文件的本地路径string filePath = Server.MapPath("~/" + UPLOAD_DIRECTORY);// 确定文件名string fileName = FileUpload1.PostedFile.FileName;// 上传到服务器FileUpload1.SaveAs(filePath + fileName);// 提示上传成功Response.Write("<p >上传成功!</p>");}else{// 没有选择文件就点击上传时报错,提示要选文件Response.Write("<p >请选择要上传的文件!</p>");}}/** 函数名:ButtonDownload_Click* 作用:响应用户下载文件* 参数:object sender, EventArgs e* 返回:void*/protected void ButtonDownload_Click(object sender, EventArgs e){// 要下载的文件名,根据实际情况获取到这种形式string filename = "test.jpg";try{// 服务器文件路径string strFilePath = Server.MapPath("~") + "/" + DOWNLOAD_DIRECTORY + filename;FileInfo fileInfo = new FileInfo(strFilePath);Response.Clear();Response.Charset = "GB2312";Response.ContentEncoding = System.Text.Encoding.UTF8;Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(fileInfo.Name));Response.AddHeader("Content-Length", fileInfo.Length.ToString());Response.ContentType = "application/x-bittorrent";Response.WriteFile(fileInfo.FullName);Response.End();}catch (System.Threading.ThreadAbortException ex){}catch (Exception ex){}}

}

3、运行测试

 

在VS2013里点击调试开始运行,这是打开后的界面

 

点击“选择文件”去选择本地文件,比如我们选一个Image 1.png文件,点击“确认上传”

 

片刻会看到网页显示“上传成功!”,表示刚刚的PNG文件上传到了服务器,即网站所在的目录

 

我们去网站文件所在的目录查看一下,果然在UploadFile目录下有刚刚上传的文件

 

点击“下载文件”按钮,浏览器会弹出下载文件提示框,点击“下载”

 

片刻就会提示下载完毕,我们还是去下载到的目录中看看

 

刚刚选择的是下载到桌面,直接去桌面看就行了,我们确实发现刚刚下载了一个test.jpg文件在桌面

当然,这个文件下载是这里固定了文件的,根据代码我们可以自己实现选择什么样的文件去下载到本地

 

参考文章:http://blog.ncmem.com/wordpress/2023/09/10/asp-net%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e5%92%8c%e4%b8%8b%e8%bd%bd/

欢迎入群一起讨论

 

 

标签:文件,ASP,System,using,NET,上传,Response,下载
From: https://www.cnblogs.com/songsu/p/17691446.html

相关文章

  • hdfs批量上传下载文件和删除指定目录下文件
    hdfs批量上传下载文件和删除指定目录下文件一、hdfs批量下载文件hdfsdfs-gets3a://bigdata/infra/zeppelin/notebook/二、hdfs批量上传文件hdfsdfs-put./*/bigdata/infr/zeppelin/notebook/三、hdfs删除指定目录hdfsdfs-rm-r/bigdata/infra/zeppelin/notebook/wei.ji10......
  • Java项目文件上传和下载
    话不多说,拿到Java项目,跑起来。这是前后端分离的项目,前端比较简单,直接打开html文件。仓库地址:https://gitee.com/hicey/file-manager提供:分片上传、断点续传、秒传功能另外的下载、删除功能开发环境:JDK8,SpringBoot2.x,MySQL5.5,web-uploader秒传上传完成后再次选择这个文件......
  • .Net8 AOT+VMP简单的逆向分析
    1.前言测试下VMP加密.NET的强度,选了最新的.Net8+AOT编译,用VMP给它加壳。最后逆向下,简单的分析,本篇看下。2.概述一.前奏首先一段简单的C#代码:namespaceTest_{internalclassProgram{staticvoidMain(string[]args){Console.WriteLine("hello,......
  • oss无sdk上传文件的bash脚本
    前言:有时候需要做一些上传的操作,这边简单的记录下这个bash脚本需要依赖echo、file、awk、openssl、curl,上传的时候需要注意下bash模版#!/bin/bashhost="oss-cn-hangzhou.aliyuncs.com"bucket="bucket"#BucketNameid="id"#AccessKeyIdkey="key"#AccessKeySecretossh......
  • LLamaSharp - .NET Binding for llama.cpp
    https://github.com/SciSharp/LLamaSharp TheC#/.NETbindingof llama.cpp.ItprovidesAPIstoinferencetheLLaMaModelsanddeployitonlocalenvironment.ItworksonbothWindows,LinuxandMACwithoutrequirmentforcompilingllama.cppyourself.Its......
  • .NetCore使用cap
    .NetCore使用cap[CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案,同样可以用来作为EventBus使用分布式的代价:分布式环境下,服务器之间的通信,可能是不靠谱,这种情况无法避免分区容错,一定存在。CAP是不能同时满足的!Consistency 和 Availability......
  • 十分钟玩转容器服务 Kubernetes
    在当今的数字化时代,容器技术已成为应用部署的主流方式。Kubernetes作为最受欢迎的容器编排平台,能够提供高效、可扩展的容器服务。本文将介绍Kubernetes的基本概念、玩转容器服务的重要性和好处,以及如何使用Kubernetes来管理容器化应用。首先,让我们了解一下Kubernetes是什么。Kuber......
  • asp.net villa
    F:\song_csharp\MagicVilla_API-master\MagicVilla_VillaAPI\MappingConfig.csusingAutoMapper;usingMagicVilla_VillaAPI.Models;usingMagicVilla_VillaAPI.Models.Dto;namespaceMagicVilla_VillaAPI{publicclassMappingConfig:Profile{......
  • java 支持 超大上G,多附件上传技术
    ​ 之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需求,都能得到满足。小小开心了一把。  但无论插件再怎么灵活,也难以应付所有的需求,比......
  • java 支持 超大上G,多附件上传示例解析
    ​ 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。先说下要求:PC端全平台支持,要求支持Windows,Mac,Linux支持所有浏览器。支持文件批量上传支持文件夹上传,且要求在服务端保留层级结构。文件夹数量要求支持到10W......