Webform(文件上传)
1.HTML编码:
<input type="file" />
2.控件:FileUpload
它是用来选择要上传的文件,还需要一个按钮来将选中的文件上传到服务器上
string path = "images/" + FileUpload1.FileName;
FileUpload1.SaveAs(Server.MapPath(path));
优化1:文件保留原有名称和后缀
string path = "images/" + FileUpload1.FileName;
优化2:防止重名,或是同一时间多个人同时上传同一名称文件
string path = "images/" + DateTime.Now.ToString("yyyyMMddhhssmmms") + Request.Cookies["ures"].Value + FileUpload1.FileName;
优化3:可以上传大文件,默认是4MB,4096KB
方法:扩容
在Web.config中的system.web标记中添加下面一句:
<httpRuntime maxRequestLength="扩容大小" />
注意:不要扩的太大,因为如果多人同时上传大文件,可能会造成服务器内存溢出,导致服务器崩溃。
优化4:超过上传要求的大小,阻止上传并提示文件过大
C#端解决:
if( FileUpload1.PostedFile.ContentLength>(1024*1024*10))
{
Labei1.Text="文件超过10M,不要上传这么大的!";
return;
}
C#端不好用,因为如果文件超过了最大长度,C#端是限制不住的,会直接将程序崩溃
JS端:

document.getElementById("Button1").onclick = function () {
//取出上传元素
var fi1 = document.getElementById("FileUpload1");
//判断是否有选中的文件
if (fi1.value.length <= 0) {
alert('请选择要上传的文件!');
return false;
}
else {
//验证选中的文件长度是否满足条件
if (fi1.files[0].size > (1024 * 1024 * 10))
{
alert('文件过大,不允许上传!');
return false;
}
}
};

优化5:限制可以选择的文件类型
在Fileupload属性里加 accept=".jpg,.jpeg,.png"
断点续传:
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[];
// 指定要下载文件的路径.
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 = ;
if (Request.Headers["Range"] != null)
{
Response.StatusCode = ; // 表示返回到客户端的 HTTP 输出状态的整数。默认值为 200。
sum = long.Parse(Request.Headers["Range"].Replace("bytes=", "").Replace("-", ""));
}
if (sum != )
{
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 > )
{
// 判断客户端是否仍连接在服务器
if (Response.IsClientConnected)
{
// 获取缓冲区中的总字节数.
int length = fileStream.Read(buffer, , );
// 写入数据
Response.OutputStream.Write(buffer, , length);
// 将缓冲区的输出发送到客户端
Response.Flush();
buffer = new Byte[];
fileSize = fileSize - length;
}
else
{
//当用户断开后退出循环
fileSize = -;
}
}
}
catch (Exception ex)
{
Response.Write("Error : " + ex.Message);
}
finally
{
if (fileStream != null)
{
//关闭文件
fileStream.Close();
}
Response.End();
}
}
}
Webform(文件上传)的更多相关文章
- webform文件上传、图片水印、验证码
文件上传: 所用控件:FileUpload 使用时的思路: 1.判断用户是否选中了文件 FileUpload.FileName获取选中的文件名,判断长度,如果长度大于零就代表已经选择了文件 JS端:通 ...
- Webform 文件上传、 C#加图片水印 、 图片验证码
文件上传:要使用控件 - FileUpload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.val ...
- WebForm 文件上传
//Button1的点击事件 //FileUpload1.FileName为所传文件的名字. //以DateTime.Now.ToString("yyyyMMddhhmmssms" ...
- 【2017-05-30】WebForm文件上传
用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1" runat="server" /> ...
- WebForm文件上传
用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1" runat="server" /> ...
- 【2017-05-30】WebForm文件上传。从服务端删除文件
用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1" runat="server" /> ...
- webform 文件上传(头像上传) 隐藏FileUpload
<div> <%-- 核心思想:把FileUpload设为relative,top:-200px;opacity: --%> <div id="localIma ...
- MVC&WebForm对照学习:文件上传(以图片为例)
原文 http://www.tuicool.com/articles/myM7fe 主题 HTMLMVC模式Asp.net 博客园::首页:: :: :: ::管理 5 Posts :: 0 ...
- WebForm之FileUpload控件(文件上传)
FileUpload控件要与Button.LinkButton.ImageButton配合使用 FileUpload控件的方法及属性: 1.SaveAs("要上传到服务器的绝对路径" ...
随机推荐
- Androd开发之广告栏设计
对于做Android开发的工程师对于这个效果的实现一定不陌生,本篇我将带领大家先简单实现这个效果,再为大家介绍一下其中的原理,方便新手学习,老手复习,内容简单易懂,没有基础一样学习,不扯没用的了,下面 ...
- svn的安装与使用
Eclipse安装SVN插件 1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版 如果没有安装的请到这里下载安装 ...
- Java多线程系列--“JUC原子类”04之 AtomicReference原子类
概要 本章对AtomicReference引用类型的原子类进行介绍.内容包括:AtomicReference介绍和函数列表AtomicReference源码分析(基于JDK1.7.0_40)Atomi ...
- LeetCode:Move Zeroes
LeetCode:Move Zeroes [问题再现] Given an array nums, write a function to move all 0's to the end of it w ...
- 基于TFS实践敏捷-可视化管理
TFS是基于微软平台一套不错的系统,支持源码管理+运行调试+持续集成+自动化测试+Bug管理+代码评审+任务项管理+文档管理+沟通管理.基于TFS 2015实践看板管理,让团队的数据可视化,让大家更多 ...
- UML简介
Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型 ...
- vs切换当前编辑文件时自动定位目录树
在编辑区,切换当前编辑文件时(单击.cpp或.h文件选项卡),"解决方案资源管理器"目录树会自动定位当前编辑的文件,并以灰色标识,当一个解决方案中的工程数目数目很多,每个工程下面又 ...
- Wee – 为现代 Web 开发打造的 CSS 脚手架
Wee 包含许多开发人员在搭建响应的,互动的网站和应用程序时需要的组件.正如它的名字一样,Wee 是一个微小.移动优先的 CSS 复位框架.Wee 组织在一个简单的.可扩展的层次结构,拥有一致的样式和 ...
- vs2010统计项目代码总行数
按CTRL+SHIFT+F (Find in files),勾上支持正则表达式,然后输入搜索内容: ^:b*[^:b#/]+.*$ 找到最后一行就是结果
- JAVA 设计模式 装饰者模式
用途 装饰者模式 (Decorator) 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator 模式相比生成子类更为灵活. 装饰者模式是一种结构式模式. 结构