網(wǎng)站首頁 編程語言 正文
本文實(shí)例為大家分享了ASP.NET實(shí)現(xiàn)文件上傳的具體代碼,供大家參考,具體內(nèi)容如下
.NET中C/S和B/S上傳文件不同
B/S中文件上傳和C/S中的文件上傳性質(zhì)完全不一樣
在C/S中文件上傳基本上的原理是:將客戶端計(jì)算機(jī)上的目標(biāo)文件通過Socket網(wǎng)絡(luò)將文件發(fā)送至目標(biāo)服務(wù)器端計(jì)算機(jī),然后將接受到的數(shù)據(jù)轉(zhuǎn)換為原始文件
文件–轉(zhuǎn)成字節(jié)流–發(fā)送到服務(wù)器–將字節(jié)流轉(zhuǎn)成文件–保存
而B/S中文件上傳指的是在客戶端瀏覽器上,將目標(biāo)文件選擇好之后,通過網(wǎng)絡(luò)將文件發(fā)送至目標(biāo)服務(wù)器計(jì)算機(jī),然后將接收到的文件保存在服務(wù)器計(jì)算機(jī)上。
B/S上傳文件
頁面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="UpLoadFileDemo.WebForm1" %>
<!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">
? ? ? ? <div>
? ? ? ? ? ? 請(qǐng)選擇要上傳的文件:<asp:FileUpload ID="fileup" runat="server" />
? ? ? ? ? ? <asp:Button ID="btnUpload" runat="server" Text="開始上傳" OnClick="btnUpload_Click" />
? ? ? ? ? ? <asp:Literal ID="lblMsg" runat="server"></asp:Literal>
? ? ? ? </div>
? ? </form>
</body>
</html>
事件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
namespace UpLoadFileDemo
{
? ?public partial class WebForm1 : System.Web.UI.Page
? ?{
? ? ? ?protected void Page_Load(object sender, EventArgs e)
? ? ? ?{
? ? ? ?}
? ? ? ?protected void btnUpload_Click(object sender, EventArgs e)
? ? ? ?{
? ? ? ? ? ?//【1】判斷文件是否存在
? ? ? ? ? ?if (fileup.HasFile)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?//【2】獲取文件的大小,判斷是否符合設(shè)置要求
? ? ? ? ? ? ? ?double fileLength = fileup.FileContent.Length / (1024.0*1024.0);
? ? ? ? ? ? ? ?//獲取配置文件中對(duì)上傳文件大小的限制
? ? ? ? ? ? ? ?double limeitLength = Convert.ToDouble(ConfigurationManager.AppSettings["fileMaxLength"])/1024.0;
? ? ? ? ? ? ? ?if (fileLength>limeitLength)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?lblMsg.Text = $"上傳文件不能超過{limeitLength}MB";
? ? ? ? ? ? ? ? ? ?return;
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?// 【3】獲取文件名,判斷文件擴(kuò)展名是否符合要求
? ? ? ? ? ? ? ?string fileName = fileup.FileName;
? ? ? ? ? ? ? ?//判斷文件是否exe文件
? ? ? ? ? ? ? ?if (fileName.Substring(fileName.LastIndexOf(".")).ToLower()==".exe")
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?lblMsg.Text = "不能上傳應(yīng)用程序";
? ? ? ? ? ? ? ? ? ?return;
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?//【4】修改文件名稱
? ? ? ? ? ? ? ?//一般情況下,上傳的文件服務(wù)器中保存時(shí)不會(huì)采取原文件名,因?yàn)榭蛻舳擞脩艉荦嫶螅WC每個(gè)用戶端上傳文件不能被覆蓋
? ? ? ? ? ? ? ?fileName = DateTime.Now.ToString("yyyyMMddhhmmssms")+"_"+fileName; //年月日時(shí)分秒毫秒_原文件名 防止文件絕對(duì)覆蓋
? ? ? ? ? ? ? ?//【5】獲取服務(wù)器中存儲(chǔ)文件的路徑
? ? ? ? ? ? ? ?//"~"代表應(yīng)用程序的根目錄,從服務(wù)器的根目錄找 ?
? ? ? ? ? ? ? ?//"~" Shift鍵+左上角的"`"鍵
? ? ? ? ? ? ? ?string path = Server.MapPath("~/UpFile");
? ? ? ? ? ? ? ?//【6】上傳文件
? ? ? ? ? ? ? ?try
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?fileup.SaveAs(path+"/"+fileName);//參數(shù):要上傳到的文件完整路徑,路徑+"/"+文件名
? ? ? ? ? ? ? ? ? ?lblMsg.Text = "文件上傳成功";
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?catch (Exception ex)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?lblMsg.Text = $"文件上傳失敗{ex.Message}";
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ?}
}
配置文件:
<?xml version="1.0" encoding="utf-8"?> <!-- ? 有關(guān)如何配置 ASP.NET 應(yīng)用程序的詳細(xì)信息,請(qǐng)?jiān)L問 ? https://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> ? <appSettings> ? ? <!--配置上傳文件最大的字節(jié)數(shù):kb單位--><!--30MB--> ? ? <add key="fileMaxLength" value="30720"/> ? </appSettings> ? <system.web> ? ? <compilation debug="true" targetFramework="4.6.1"/> ? ? <!--httpRuntime中可以設(shè)置請(qǐng)求的最大字節(jié)數(shù)maxRequestLength--> ? ? <httpRuntime targetFramework="4.6.1" maxRequestLength="40960"/> ? </system.web> ? <system.codedom> ? ? <compilers> ? ? ? <compiler language="c#;cs;csharp" extension=".cs" ? ? ? ? type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ? ? ? ? warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/> ? ? ? <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" ? ? ? ? type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ? ? ? ? warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/> ? ? </compilers> ? </system.codedom> </configuration>
原文鏈接:https://blog.csdn.net/dust__/article/details/105753686
相關(guān)推薦
- 2022-11-02 Android?shape標(biāo)簽使用方法介紹_Android
- 2023-05-23 numpy數(shù)組之讀寫文件的實(shí)現(xiàn)_python
- 2023-02-27 pandas中concatenate和combine_first的用法詳解_python
- 2022-04-24 C語言的隨機(jī)數(shù)rand()函數(shù)詳解_C 語言
- 2022-10-07 python?中pass和match使用方法_python
- 2022-01-12 npm ERR 部署meteor時(shí)npm install出錯(cuò)問題解決
- 2022-06-28 C#二分查找算法_C#教程
- 2023-01-10 Go語言defer與return執(zhí)行的先后順序詳解_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支