通过一般处理程序实现【文件上传】
注意事项:
1>表单的提交方式必须为post,method="post";//由于http上面的数据大小有限,所以不支持使用get显示到上面。
2>必须修改表中提交数据时的数据组织方式
enctype="application/x-www-form-urlencoded"//默认方式 数据是以键值对的方式组织提交的
enctype="multipart/form-data"//需要改为这种方式 这种方式是以为分隔符的方式来进行提交的。
3>表单中需要有一个文件域。及<input type="file" name="fileData"/>
--->
客户端-html文件代码:
<form action="Uploadashx.ashx" method="post" enctype="multipart/form-data">
<input type="file" name="fileData" /><br />
<input type="submit" value="提交"/>
</form>
服务器--一般处理程序代码:
//服务器处理上传过来的文件
//首先判断文件域是否有文件
if (context.Request.Files.Count > 0)
{
//获得第一个文件
HttpPostedFile file = context.Request.Files[0];
//判断里面的内容是否为null
if (file.ContentLength > 0)
{
//将上传过来的内容保存到一个文件夹
string str1 = Path.GetFileName(file.FileName);
file.SaveAs(context.Request.MapPath("Files/"+str1));
//根据相对路径获取绝对路径,并追加文件名开始保存
}
}
<<--
上传文件需要注意的问题:
1.【解决文件重名问题
可以通过Guid生成一个序列号(没重复的),然后+文件名拼接成一个新的文件名,然后保存,这样就可以避免重名发生覆盖现象。
string new_FIleName = Guid.NewGuid().ToString() + "_" + file.FileName;
2.【解决文件过多存储问题
可以通过目录分离算法来保证将不同的图片保存在不同的目录下。
--------------------------------------------------------<<
string new_FIleName = Guid.NewGuid().ToString() + "_" + file.FileName;
//获得哈希码
int hash_Code = new_FIleName.GetHashCode();
//获得第一层目录
int dir1 = hash_Code & 0xf;
hash_Code = hash_Code >> 4;//向右移动四位得到第二层目录
int dir2 = hash_Code & 0xf;
hash_Code = hash_Code >> 4;//再向右移动四位得到第三层目录
int dir3 = hash_Code & 0xf;
//拼接路径
string strPath = Path.Combine(context.Request.MapPath("filePath/"),dir1.ToString(),dir2.ToString(),dir3.ToString());
//判断路径是否存在
if (!Directory.Exists(strPath))
{
//如果不存在则创建文件
Directory.CreateDirectory(strPath);
}
//拼接路径+文件名
strPath = Path.Combine(strPath, new_FIleName);
//开始保存
file.SaveAs(strPath);
context.Response.Write("上传成功~");
3.【不允许用户上传exe文件,所以要先判断用户上传的内容是否合法
-->>在服务器进行校验
string ext=Path.GetExtension(file.FileName);//首先获得扩展名 if((ext==".jpg"||ext==".png"||ext==".gif")&&file.ContentType.ToLower().StartsWith("image"))
{
context.Response.Write("文件上传成功~");
}else{
context.Response.Write("非法的文件!");
}
-->>在客户端用js进行校验
//在客户端校验用户上传的文件是否合法
document.getElementById("btnClick").onclick = function () {
//1.获取用户选择文件的名称
var getFile = document.getElementById("fileData").value();
//2.获取后缀
var ext = getFile.substring(getFile.lastIndexOf('.'));
//3.校验
if(ext==".jpg"||ext==".png"||ext==".gif")&&file.ContentType.ToLower().StartsWith("image"))
{
return true;
}else{
return false;
}
};
转载于:https://www.cnblogs.com/shuai7boy/p/5536840.html
通过一般处理程序实现【文件上传】相关推荐
- html上传文件与后台处理,HTML加一般处理程序实现文件上传
HTML代码: 选择要上传的图片: 后台程序: using System; using System.Collections.Generic; using System.Linq; using Sys ...
- C#——文件上传(一般处理程序ashx)
Framework版本:.Net Framework 4 1.FileInfo实体 using System; using System.Collections.Generic; using Syst ...
- 使用ajaxfileupload.js实现文件上传
ajaxFileUpload是一个异步上传文件的jQuery插件 语法:$.ajaxFileUpload([options]) options参数说明: 1.url 上传处理程序地址. 2,file ...
- jquery文件上传插件 uploadify java_jQuery文件上传插件Uploadify使用指南
对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持 Flash,主要特性:支持多文件上传.HTML5版本可拖拽上传.实时上传进度条显示.强大的参数 定制功能,如文件大小. ...
- 文件上传利器SWFUpload入门简易教程
凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...
- ASP.NET学习笔记 —— 一般处理程序之图片上传
简单图片上传功能 目标:实现从本地磁盘读取图片文件,展示到浏览器页面. 步骤: (1). 首先创建一个用于上传图片的HTML模板,命名为ImageUpload.html: <!DOCTYPE h ...
- UEditor 任意文件上传漏洞
1 漏洞简介 1.1 漏洞描述 Ueditor是百度开发的一个网站编辑器,目前已经不对其进行后续开发和更新,该漏洞只存在于该编辑器的.net版本.其他的php,jsp,asp版本不受此UEditor的 ...
- PHP实现多文件上传
PHP文件上传流程 单击提交按钮,浏览器用户将包含上传文件的表单数据提交给PHP处理程序 Web服务器和PHP预处理器首先判断表单数据的大小是否超过php.ini配置文件中的post_max_size ...
- Spring MVC文件上传示例教程 - 单个和多个文件
Spring MVC文件上传示例教程 - 单个和多个文件 文件上传是任何Web应用程序中非常常见的任务.我们之前已经看过如何在Servlet和Struts2文件上传中上传文件.今天我们将学习Sprin ...
最新文章
- mac 使用homebrew 安装mysql
- 二分图的匹配问题以及求解算法
- android:ellipsize实现跑马灯效果总结
- linux ls模糊查询,linux – 找到和ls的通配符
- git简明教程:基本操作命令
- python在电脑上的图标_在python scrip中嵌入图标
- windows系统上openssh client的离线安装
- python常用代码_Python常用算法学习(4) 数据结构(原理+代码)-最全总结
- wdcp 无法更换php,wdcp降级到php5.2后Zend Optimizer失效的解决办法
- 5G 即将带来冲击!| 畅言
- 计算机动画---计算机动画的光栅方法
- 传智播客Java 方法
- macos ntfs插件_NTFS for Mac 助手 - Mac读写NTFS磁盘工具
- 互联网晚报 | 11月22日 星期一 | 华为正式开启二手机业务;B站通过收购获得支付牌照;字节跳动公益平台正式上线...
- PHP第三章到第七章
- AndroidX是什么?
- 创意几何点线面三角形孟菲斯海报banneer广告设计ai矢量背景素材
- 人工智能工程师要具备的5项基本技能
- 【华人学者风采】魏少军 清华大学
- gerrit 描述信息批量导入导出