WebForm(文件上传)
文件上传控件:FileUpload
一、基本上传
1、准备阶段:(1)准备保存路径
根目录:string s = "Uploads/aaa.txt"; 上传的绝对路径:string path = Server.MapPath(s);
2、上传
FileUpload1.SaveAs(path);
二、优化:
1:保留文件原有的名字,防止覆盖
解决:把路径中的文件名替换为控件选中的文件名
string s = "Uploads/" + FileUpload1.FileName;
2、文件名一样,会覆盖,造成文件丢失
解决:文件名拼接时间和用户名
string s = "Uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + Request.Cookies["user"].Value + FileUpload1.FileName;
3、可以上传大文件,默认是4MB,4096KB
方法:扩容
在Web.config中的system.web标记中添加下面一句:
<httpRuntime maxRequestLength="扩容大小" />
注意:不要扩的太大,因为如果多人同时上传大文件,可能会造成服务器内存溢出,导致服务器崩溃。
4、超过上传要求的大小,阻止上传并提示文件过大
服务端限制:
if (FileUpload1.PostedFile.ContentLength > 1024 * 1024 * 4)
{
Label1.Text = "文件过大!";
return;
}
客户端限制:
<script type="text/javascript">document.getElementById("Button1").onclick = function () {var fl = document.getElementById('FileUpload1');if (fl.value.length <= 0) {document.getElementById('Label1').innerHTML = "请先选择要上传的文件!";return false;}else {if (fl.files[0].size > 1024 * 1024 * 4) {document.getElementById('Label1').innerHTML = "文件过大,不允许超过4MB大小!";return false;}}}</script>
上传文件设置:
<asp:FileUpload ID="FileUpload1" accept=".jpg,.jpeg,.png" runat="server" />
断点续传:
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; public partial class DFile : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void LinBtnDFile_Click(object sender, EventArgs e) { // 创建一比特数组 byte[] buffer = new Byte[10240]; // 指定要下载文件的路径. string filePath = @"D:\爱智旮旯.rar"; // 或取文件名包括扩展名 string fileName = Path.GetFileName(filePath); Stream fileStream = null; try { // 打开文件 fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); Response.Clear(); // 获取文件的大小 long fileSize = fileStream.Length; long sum = 0; if (Request.Headers["Range"] != null) { Response.StatusCode = 206; // 表示返回到客户端的 HTTP 输出状态的整数。默认值为 200。 sum = long.Parse(Request.Headers["Range"].Replace("bytes=", "").Replace("-", "")); } if (sum != 0) { Response.AddHeader("Content-Range", "bytes " + sum.ToString() + "-" + ((long)(fileSize)).ToString() + "/" + fileSize.ToString()); } // 获取部分http头信息 Response.AddHeader("Content-Length", ((long)(fileSize - sum)).ToString()); Response.ContentType = "application/octet-stream"; //获取文件来源 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(fileName))); // Response.Flush(); fileStream.Position = sum; //设置当前流位置 fileSize = fileSize - sum; // 当文件大小大于0是进入循环 while (fileSize > 0) { // 判断客户端是否仍连接在服务器 if (Response.IsClientConnected) { // 获取缓冲区中的总字节数. int length = fileStream.Read(buffer, 0, 10240); // 写入数据 Response.OutputStream.Write(buffer, 0, length); // 将缓冲区的输出发送到客户端 Response.Flush(); buffer = new Byte[10240]; fileSize = fileSize - length; } else { //当用户断开后退出循环 fileSize = -1; } } } catch (Exception ex) { Response.Write("Error : " + ex.Message); } finally { if (fileStream != null) { //关闭文件 fileStream.Close(); } Response.End(); } } }
断点续传
转载于:https://www.cnblogs.com/hclyz/p/6912147.html
WebForm(文件上传)相关推荐
- 【2017-05-30】WebForm文件上传。从服务端删除文件
用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1" runat="server" /> ...
- ASP.NET实现文件上传
新建ASP.NET Web应用程序 单文件上传 效果 页面代码 <%@ Page Language="C#" AutoEventWireup="true" ...
- lumen 支持多文件上传及php 原生多文件上传
1.webform (注意:name后面一定要加[]号) <form method="post" enctype="multipart/form-data" ...
- MVCWebForm对照学习:文件上传(以图片为例)
MVC&WebForm对照学习:文件上传(以图片为例) 在web应用中,文件上传是个很普遍的功能,那么今天就来小结一下asp.net中文件上传的方式.首先我们快速来回忆一下WebForm中的文 ...
- springboot设置文件上传大小(tomcat默认1M)
application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...
- 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...
- Springboot 多文件上传
其实多个文件和单个文件上传是一样的,可以使用同一个Controller 添加依赖 <!-- https://mvnrepository.com/artifact/commons-fileuplo ...
- django文件上传
Django在处理文件上传时,文件数据被打包封装在request.FILES中. 一.简单上传 首先,写一个form模型,它必须包含一个FileField: # forms.py from djang ...
- spring boot 文件上传工具类(bug 已修改)
以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...
最新文章
- python heap_python topN max heap,使用heapq还是自己实现?
- pip更换源 windows10_Conda及Pip换源处理
- [博客..配置?]博客园美化
- Android 帧动画,加载动画,AnimationDrawable,仿京东加载动画
- linux内核分成如下五个子系统,linux内核主要由5个子系统 Linux内核由哪几个子系统组成?...
- Debian安装软件是Debian GNU/Linux 5.0.4 _Lenny_ - Official amd64 DVD Binary-1 20100131-22:09
- python中;是什么意思_Python
- 【Teradata】系统吞吐量重要参数QPS(TPS)、并发数、响应时间
- python3怎么使用qstring_PyQt的QString和python的string的区别
- c语言递归算法兔子问题,Java递归算法经典实例(经典兔子问题)
- 《社会调查数据管理——基于Stata 14管理CGSS数据》一3.4 Stata的一些术语及使用通则...
- NVIDIA CUDA各版本下载链接(包括最新11版本和以往10.2版本)
- 日常开发中,String类中常用的方法
- 面向对象实现气缸吹气类的PLC逻辑
- 由加速度计解算得到姿态角
- 用U盘安装Windows server 2012 R2
- 【蓝凌系统】OA首页最新知识_正文表格模板
- 【转载】C/C++ 笔试面试(1)—— sizeof
- 当女友让程序员去买西瓜...... | 每日趣闻
- HDU 6461 hzy 和zsl 的生存挑战(博弈)
热门文章
- 人工智能时代将至,教育或将发生大改变,未来教育会人工智能化?
- 连休8天!关于2020年国庆节、中秋节放假安排的通知!!!
- C# WinForm DataGridView单击选中一整行,只能单选
- vscode怎么设置打开新的文件而不会关闭原来文件
- 远程连接oracle01017,连接Oracle远程数据库错误:ORA-12541,ORA-12514,ORA-01017的解决方法!...
- java 自定义注解
- 007_JavaScript关键字和保留字
- Mac下Unity5x的安装
- oracle 概要文件不存在,oracle 概要文件 - kecy1217的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- mock模拟接口测试_Python接口测试之mock(中)