注意事项:
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

通过一般处理程序实现【文件上传】相关推荐

  1. html上传文件与后台处理,HTML加一般处理程序实现文件上传

    HTML代码: 选择要上传的图片: 后台程序: using System; using System.Collections.Generic; using System.Linq; using Sys ...

  2. C#——文件上传(一般处理程序ashx)

    Framework版本:.Net Framework 4 1.FileInfo实体 using System; using System.Collections.Generic; using Syst ...

  3. 使用ajaxfileupload.js实现文件上传

    ajaxFileUpload是一个异步上传文件的jQuery插件 语法:$.ajaxFileUpload([options]) options参数说明: 1.url  上传处理程序地址. 2,file ...

  4. jquery文件上传插件 uploadify java_jQuery文件上传插件Uploadify使用指南

    对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持 Flash,主要特性:支持多文件上传.HTML5版本可拖拽上传.实时上传进度条显示.强大的参数 定制功能,如文件大小. ...

  5. 文件上传利器SWFUpload入门简易教程

    凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...

  6. ASP.NET学习笔记 —— 一般处理程序之图片上传

    简单图片上传功能 目标:实现从本地磁盘读取图片文件,展示到浏览器页面. 步骤: (1). 首先创建一个用于上传图片的HTML模板,命名为ImageUpload.html: <!DOCTYPE h ...

  7. UEditor 任意文件上传漏洞

    1 漏洞简介 1.1 漏洞描述 Ueditor是百度开发的一个网站编辑器,目前已经不对其进行后续开发和更新,该漏洞只存在于该编辑器的.net版本.其他的php,jsp,asp版本不受此UEditor的 ...

  8. PHP实现多文件上传

    PHP文件上传流程 单击提交按钮,浏览器用户将包含上传文件的表单数据提交给PHP处理程序 Web服务器和PHP预处理器首先判断表单数据的大小是否超过php.ini配置文件中的post_max_size ...

  9. Spring MVC文件上传示例教程 - 单个和多个文件

    Spring MVC文件上传示例教程 - 单个和多个文件 文件上传是任何Web应用程序中非常常见的任务.我们之前已经看过如何在Servlet和Struts2文件上传中上传文件.今天我们将学习Sprin ...

最新文章

  1. mac 使用homebrew 安装mysql
  2. 二分图的匹配问题以及求解算法
  3. android:ellipsize实现跑马灯效果总结
  4. linux ls模糊查询,linux – 找到和ls的通配符
  5. git简明教程:基本操作命令
  6. python在电脑上的图标_在python scrip中嵌入图标
  7. windows系统上openssh client的离线安装
  8. python常用代码_Python常用算法学习(4) 数据结构(原理+代码)-最全总结
  9. wdcp 无法更换php,wdcp降级到php5.2后Zend Optimizer失效的解决办法
  10. 5G 即将带来冲击!| 畅言
  11. 计算机动画---计算机动画的光栅方法
  12. 传智播客Java 方法
  13. macos ntfs插件_NTFS for Mac 助手 - Mac读写NTFS磁盘工具
  14. 互联网晚报 | 11月22日 星期一 | 华为正式开启二手机业务;B站通过收购获得支付牌照;字节跳动公益平台正式上线...
  15. PHP第三章到第七章
  16. AndroidX是什么?
  17. 创意几何点线面三角形孟菲斯海报banneer广告设计ai矢量背景素材
  18. 人工智能工程师要具备的5项基本技能
  19. 【华人学者风采】魏少军 清华大学
  20. gerrit 描述信息批量导入导出

热门文章

  1. English学习资料大全
  2. OC中使用 static 、 extern、 const使用
  3. Sqlserver 数据库安全
  4. spark集群启动正常,但是提交任务后只有一个节点(slave/worker)参与集群计算
  5. 通俗讲清楚为什么使用信息熵增益比而不是信息熵增益?
  6. Raspberry Pi, UPNP(二), Scala
  7. Class类---反射学习笔记(一)
  8. 绘图和可视化---matplotlib包的学习
  9. 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串 1
  10. Java中方法参数的传递