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();
}
}
}

断点续传

posted on 2017-05-27 14:05 瀚城老爷子 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/hclyz/p/6912147.html

WebForm(文件上传)相关推荐

  1. 【2017-05-30】WebForm文件上传。从服务端删除文件

    用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1"  runat="server" /> ...

  2. ASP.NET实现文件上传

    新建ASP.NET Web应用程序 单文件上传 效果 页面代码 <%@ Page Language="C#" AutoEventWireup="true" ...

  3. lumen 支持多文件上传及php 原生多文件上传

    1.webform (注意:name后面一定要加[]号) <form method="post" enctype="multipart/form-data" ...

  4. MVCWebForm对照学习:文件上传(以图片为例)

    MVC&WebForm对照学习:文件上传(以图片为例) 在web应用中,文件上传是个很普遍的功能,那么今天就来小结一下asp.net中文件上传的方式.首先我们快速来回忆一下WebForm中的文 ...

  5. springboot设置文件上传大小(tomcat默认1M)

    application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...

  6. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

  7. Springboot 多文件上传

    其实多个文件和单个文件上传是一样的,可以使用同一个Controller 添加依赖 <!-- https://mvnrepository.com/artifact/commons-fileuplo ...

  8. django文件上传

    Django在处理文件上传时,文件数据被打包封装在request.FILES中. 一.简单上传 首先,写一个form模型,它必须包含一个FileField: # forms.py from djang ...

  9. spring boot 文件上传工具类(bug 已修改)

    以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...

最新文章

  1. python heap_python topN max heap,使用heapq还是自己实现?
  2. pip更换源 windows10_Conda及Pip换源处理
  3. [博客..配置?]博客园美化
  4. Android 帧动画,加载动画,AnimationDrawable,仿京东加载动画
  5. linux内核分成如下五个子系统,linux内核主要由5个子系统 Linux内核由哪几个子系统组成?...
  6. Debian安装软件是Debian GNU/Linux 5.0.4 _Lenny_ - Official amd64 DVD Binary-1 20100131-22:09
  7. python中;是什么意思_Python
  8. 【Teradata】系统吞吐量重要参数QPS(TPS)、并发数、响应时间
  9. python3怎么使用qstring_PyQt的QString和python的string的区别
  10. c语言递归算法兔子问题,Java递归算法经典实例(经典兔子问题)
  11. 《社会调查数据管理——基于Stata 14管理CGSS数据》一3.4 Stata的一些术语及使用通则...
  12. NVIDIA CUDA各版本下载链接(包括最新11版本和以往10.2版本)
  13. 日常开发中,String类中常用的方法
  14. 面向对象实现气缸吹气类的PLC逻辑
  15. 由加速度计解算得到姿态角
  16. 用U盘安装Windows server 2012 R2
  17. 【蓝凌系统】OA首页最新知识_正文表格模板
  18. 【转载】C/C++ 笔试面试(1)—— sizeof
  19. 当女友让程序员去买西瓜...... | 每日趣闻
  20. HDU 6461 hzy 和zsl 的生存挑战(博弈)

热门文章

  1. 人工智能时代将至,教育或将发生大改变,未来教育会人工智能化?
  2. 连休8天!关于2020年国庆节、中秋节放假安排的通知!!!
  3. C# WinForm DataGridView单击选中一整行,只能单选
  4. vscode怎么设置打开新的文件而不会关闭原来文件
  5. 远程连接oracle01017,连接Oracle远程数据库错误:ORA-12541,ORA-12514,ORA-01017的解决方法!...
  6. java 自定义注解
  7. 007_JavaScript关键字和保留字
  8. Mac下Unity5x的安装
  9. oracle 概要文件不存在,oracle 概要文件 - kecy1217的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  10. mock模拟接口测试_Python接口测试之mock(中)