- 浏览: 614035 次
- 性别:
- 来自: 卡哇伊
文章分类
- 全部博客 (299)
- C# (25)
- Java (1)
- WinForm (0)
- Asp.Net (86)
- Jsp (2)
- Php (1)
- Web Service (0)
- Desgin Patterns (19)
- Data Structure & Algorithms (1)
- SQLserver (41)
- Mysql (0)
- Oracle (2)
- Javascript (50)
- Ajax (10)
- Jquery (1)
- Flex (0)
- Regular Expression (5)
- DIV+CSS+XHTML+XML (18)
- Software Test (0)
- Linux (0)
- Utility (17)
- Net Digest (4)
- windows 2003 (10)
- Other (4)
- English (1)
- IT Term (1)
最新评论
-
w497480098h:
学习了 很好谢谢
SQL Server下无限多级别分类查询解决办法(简单查询树形结构数据库表) -
main_fun:
确实不错
iframe自适应高度 -
jveqi:
...
DBA -
mxcie:
其它版本没有确认,今天使用vs2003时,其.sln文件也需要 ...
彻底删除项目的VSS源代码管理信息 -
moneyprosper:
就只有IE支持,火狐和谷歌都不支持此种方法。正在寻找中。。。
从父页面读取和操作iframe中内容方法
服务器端检查两种方式:
1.检查文件的扩展名.
2.读取文件的二进制.
检查文件的扩展名:
检查文件的扩展名: //判断是否有上传文件 if (FileUpload1.HasFile) { //截取要上传文件的扩展名 //string extension = FileUpload1.FileName .Substring(FileUpload1.FileName.LastIndexOf(".")).ToLower(); string extension = System.IO.Path .GetExtension(FileUpload1.FileName).ToLower(); //上传文件是否大于10MB if (FileUpload1.PostedFile.ContentLength < 10485760) { //设置支持上传的文件格式 string[] allowedextension = { ".jpg", ".gif", ".jpeg", ".bmp", ".png" }; for (int i = 0; i < allowedextension.Length; i++) { //判断上传文件扩展名是否正确 if (!(extension != allowedextension[i])) { try { //上传文件 FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Files/")+ FileUpload1.FileName); lblMessage.Text = "文件上传成功!"; break; } catch (Exception ex) { lblMessage.Text = "出现错误,无法上传!"; } } else { lblMessage.Text = "不支持" + extension + "格式的文件!"; } } } else { lblMessage.Text = "上传文件大小不能超过10MB!"; } } else { lblMessage.Text = "不存在上传文件!"; }
以上例子做法的弊端,假设上传文件是.wma文件,把扩展名改成.jpg文件那么将不能被识别,依然能够上传.
解决方法:通过读取文件的二进制,每种文件的二进制前面两个字节都是不一样的,不同的文件扩展名它的
二进制前面两个字节是不同的.我们可以通过这种方式来检测文件的扩展名.如:.jpg文件前两个字节是:255216
.gif文件前两个字节是:7173,6677是BMP,13780是PNG;7790是exe,8297是rar.
上传文件名相同,文件将被覆盖,我们要对文件名的唯一性处理该怎么办呢?
上传文件名唯一性的处理:
1.利用时间戳
2.利用GUID(全局统一标识符)
GUID的介绍可以参考;http://jhxk.iteye.com/admin/blogs/393195
读取文件的二进制并且对文件名的唯一性做处理:
protected void btnUpLoad_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { //判断文件大小是否大于10MB if (FileUpload1.PostedFile.ContentLength < 10485760) { if (CheckFileType()) { try { /*使用时间戳精确到毫秒,SessionID,上传文件大小, 5位随机数,来做上传文件名唯一性的处理*/ /* Random rd = new Random(); String fileName = DateTime.Now.ToString("yyyyMMddhhmmssfff")+ rd.Next(10000,99999)+ Session.SessionID + FileUpload1.PostedFile.ContentLength + System.IO.Path.GetExtension(FileUpload1.FileName);*/ /*如果使用时间戳还觉得不够保险,需要绝对唯一 *那么可以使用GUID(全局的唯一标示符):*/ string fileName = Guid.NewGuid().ToString() + System.IO.Path.GetExtension(FileUpload1.FileName); FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Files/") + fileName); lblMessage.Text = "上传文件成功!"; } catch (Exception) { lblMessage.Text = "出现异常无法上传!"; } } else { lblMessage.Text = "不支持此文件格式!"; } } else { lblMessage.Text = "文件大小不能超过10MB"; } } else { lblMessage.Text = "文件不存在,请选择文件!"; } } //通过读取文件二进制的前两个字节判断文件的类型 private bool CheckFileType() { //得到客户端文件的绝对路径 String file=FileUpload1.PostedFile.FileName; //创建文件流. System.IO.FileStream fs = new System.IO.FileStream(file,System.IO.FileMode.Open,System.IO.FileAccess.Read); //创建读取文件二进制的对象 System.IO.BinaryReader br=new System.IO.BinaryReader(fs); string fileType=String.Empty; //读取文件的第一个字节,并将读取位置提升一个字节. fileType = br.ReadByte().ToString(); //读取第二个字节,并将读取位置提升一个字节. fileType += br.ReadByte().ToString(); /*如果不知道文件的二进制前两个字节,可以将它打印出来: * Response.Write(fileBinary); */ //允许上传文件的扩展名 String[] allowtedExtension = {"255216", "7173", "6677"}; //判断是否允许上传的文件类型 foreach (string allowEx in allowtedExtension) { if (!(allowEx != fileType)) { return true; } } return false; }
文件下载示例:
//加载下载列表 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //首先,获取存放文件目录 string directoryPath = Server.MapPath("~/Files"); //创建目录对象,用来创建,移动和枚举目录及子目录. System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(directoryPath); /*获取在这个目录下所有的文件, GetFileSystemInfos()方法返回所有文件和子目录*/ System.IO.FileSystemInfo[] infos = dir.GetFileSystemInfos(); //定义列表选项 ListItem myItem; //通过foreach遍历整个文件夹里,所有的文件. foreach (System.IO.FileSystemInfo myfile in infos) { //实例化列表选项 myItem = new ListItem(); //获取文件夹中文件的名称. myItem.Text = myfile.Name; //获取文件夹中文件的完整路径名称. myItem.Value = myfile.FullName; //将里表项添加到列表框中 ListBox1.Items.Add(myItem); } } } //单击下载 protected void btnDownLoad_Click(object sender, EventArgs e) { //获取文件的路径名 String selectName = ListBox1.SelectedItem.Value; //获取文件名 String saveFileName = ListBox1.SelectedItem.Text; //用来创建,复制,移动,打开文件的实例 System.IO.FileInfo finfo = new System.IO.FileInfo(selectName); //得到下载文件大小 String fileSize=finfo.Length.ToString(); //首先清空输出流 Response.Clear(); //设置输出流字符集(编码)为UTF-8 Response.Charset = "UTF-8"; Response.ContentEncoding = System.Text.Encoding.UTF8; //设置为缓冲输出,处理完整个响应之后发送它 Response.Buffer = true; //实现动态生成下载的文件名,并进行URL字符串编码,否则文件名为中文会乱码 Response.AppendHeader("Content-Disposition", "attachment;filename=" +HttpUtility.UrlEncode(saveFileName)); //设置HTTP MIME类型(输出流的文件类型) //我们使用未知类型,对它的类型不加以限定. Response.ContentType = "application/unknow"; //不指明Content-Length用Flush的话不会显示下载进度 Response.AddHeader("Content-Length", fileSize); //将指定文件直接写入HTTP响应输出流 Response.WriteFile(selectName); //清空缓冲区,向客户端发出所有缓冲输出 Response.Flush(); Response.Close(); Response.End(); }
下载示例界面参考:
发表评论
-
JS操作RadioButtonList
2009-12-16 23:25 3898function IsUpPic() { ... -
asp.net跳转页面的三种方法比较
2009-10-22 14:16 25421.Response.redir ... -
ASP.NET网站中的安全问题
2009-10-20 16:57 1194在网络经常看到网站被 ... -
新闻内容页分页的简单做法
2009-10-10 10:08 1225该例子只是提供了基本思路 很简单的做法,这个是假设数 ... -
Asp.net控件开发学习笔记(二)-控件开发基础
2009-10-03 16:49 1345接上篇…….. 看System.Web.UI.Ht ... -
Asp.net控件开发学习笔记-控件开发基础(一)
2009-10-03 16:33 1250服务器控件开发基础 当开发一个服务器控件时,首 ... -
Asp.net用户退出,清空Session,重定向登陆页面
2009-09-28 16:22 4178protected void Page_Load(object ... -
frameset中的aspx无法Postback
2009-09-28 16:07 1505<frameset cols="150,*&q ... -
.net页面定时刷新的几种简单方式
2009-09-28 11:20 59261: window.setTimeout("win ... -
动态添加TextBox
2009-09-21 16:30 1686方法1: 前台代码: <f ... -
浅谈ASP.NET管道优化
2009-09-20 21:43 1015ASP.NET管道优化 位于请求管道中的很多ASP.NET默 ... -
Asp.net 页面返回到上一页面
2009-09-20 21:20 915/// <summary> / ... -
PrecompiledApp.config文件和Global.asax 文件中的事件的关联
2009-09-19 10:24 2791在用Microsoft Visual Studio 2005开 ... -
gridview列 数字、货币和日期 显示格式
2009-09-11 17:05 1536在设置gridview等数据绑定控件的模版列时,总要 ... -
ASP.NET 打开新窗口几种方法
2009-09-09 21:44 3344ASP.NET打开新窗口方法一: Response ... -
response.addHeader("Content-Disposition","attachment; filename="+filename)中的中文乱码
2009-08-31 15:10 3250两种解决方法 1.如果web.config里utf-8 直接S ... -
技巧和诀窍:如何在VS 2005 SP1中使用VS的web服务器运行一个相对于根目录“/”的网站
2009-08-31 08:29 869大家常有一个疑问,是 ... -
Request.ServerVariables详细说明及代理
2009-08-14 10:46 2147ServerVariables是环境变量的集合。允许读取HTT ... -
DataList和Repeat无数据时提示暂无数据几种方法
2009-08-11 18:45 25751.放一个label DataTable table ... -
Asp.Net中清空所有textbox的几种方法
2009-08-08 08:53 5191用反射: FieldInfo[] info ...
相关推荐
总结来说,这个"asp.net文件上传示例"是一个基础的学习资源,它教你如何在VS2005环境下创建一个简单的文件上传功能。通过学习这个示例,你可以理解文件上传的基本机制,并在此基础上扩展和优化,以适应各种实际的Web...
在这个场景下,我们可以使用jQuery库中的`jquery.form`插件来增强页面的交互性,并结合ASP.NET后端技术,实现异步、无刷新的批量文件上传功能。下面我们将详细探讨这个过程中的关键知识点。 首先,`jQuery.form`...
#### 一、ASP.NET文件上传概述 在ASP.NET应用程序中,文件上传是一项常用的功能。用户可以将本地计算机上的文件发送到服务器进行存储或处理。这通常通过HTML表单中的`<input type="file">`元素实现,并在服务器端...
本文主要讲述了ASP.NET单文件带进度条上传的解决方案,通过使用jquery框架和ASP.NET缓存机制,实现了文件上传和进度条显示的功能。 知识点1:使用jquery框架实现文件上传 在本文中,我们使用jquery框架来实现文件...
在处理大文件上传时,ASP.NET需要特别的处理,因为默认情况下,它对上传文件的大小有限制,通常为4MB左右。针对超大文件上传的需求,开发者通常需要采取一些策略来优化和扩展这一功能,同时加入进度条显示可以提升...
接下来,我们将深入探讨ASP.NET文件上传的核心概念、实现步骤以及可能遇到的问题。 1. **文件上传基础** ASP.NET中的文件上传主要通过`HttpPostedFileBase`类来处理。当用户在表单中包含一个`<input type="file">`...
下面我们将深入探讨ASP.NET文件上传的相关知识点。 首先,`uploadpic_zpfj.aspx` 是一个ASP.NET Web Form页面,它通常包含HTML元素,如表单(`<form>`)和输入元素(`<input type="file">`),用于用户选择要上传的...
在ASP.NET环境中,文件上传是一项常见的功能,尤其在构建交互性强、用户友好的Web应用程序时。本示例“asp.net 文件上传demo”是基于.NET框架3.5的一个演示项目,它利用了Flash技术来增强文件上传体验,同时支持大...
下面将详细解释这个简单的ASP.NET文件上传类及其示例程序中的关键知识点。 首先,`FileUpload`控件是ASP.NET Web Forms中用于文件上传的标准控件。在HTML页面上,它通常表现为一个输入框和一个浏览按钮,用户可以...
在ASP.NET中处理文件上传是常见的需求,尤其是在用户需要提交图片、文档或其他数据文件时。这篇博客文章“ASP.NET通过HTML的上传文件标签来上传文件”将引导我们了解如何在ASP.NET环境中实现文件上传功能。 首先,...
ASP.NET文件上传下载程序是一个基于微软的ASP.NET技术构建的应用,用于实现用户在Web端上传和下载文件。这种程序通常包含后端服务器处理逻辑和前端用户界面,与数据库结合以存储文件元数据,如文件名、大小、上传...
标题中的“Extjs结合Asp.net文件上传”指的是在Web应用程序开发中,使用Ext JS(一个JavaScript库)和ASP.NET(Microsoft的服务器端技术)来实现文件上传功能。这一组合可以提供用户友好的界面和强大的后台处理能力...
1. **ASP.NET文件上传基础**: ASP.NET提供了多种文件上传方式,如HTML `<input type="file">` 元素配合Form表单提交,或者使用控件如ASP.NET FileUpload控件。但是,这两种方法都无法在上传过程中显示进度条。 2....
【ASP.NET文件上传与下载系统】是一个典型的Web应用程序,它允许用户通过网络进行文件的上传和下载操作。这个系统基于微软的ASP.NET框架构建,利用了ASP.NET的强大功能和高效性能,为用户提供了一种安全、便捷的方式...
asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件...
各种注视用户体验的程序出现,比如带进度条的文件上传,看了网上很多资料还没找到真正意义上的ASP.NET实现进度条上传.Ajax 文件上传进度条,ASP.NET 文件上传进度条示例,ASP.NET 文件上传,asp.net文件上传,ajax文件...
在ASP.NET中,实现自定义固定格式的多文件批量上传是一项常见的需求,这涉及到Web开发中的文件上传控件、服务器端处理以及客户端交互等多个技术环节。以下是对这一知识点的详细阐述: 1. **文件上传控件**:在ASP...
ASP.NET Core 文件上传与下载实例(多种上传方式) 知识点1: ASP.NET Core 文件上传与下载实例 ASP.NET Core 2.0 已经很成熟,可以使用模型绑定上传文件。官方文档提供了相关的示例代码,可以作为参考。 知识点2:...
在ASP.NET Web API中处理文件上传是常见的需求,特别是当你需要允许用户通过Web界面提交文件时。本文将深入探讨如何在ASP.NET Web API中实现文件上传功能,并涉及MIME多部分类型。 首先,让我们了解MIME...