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

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<!--文件上传必须设置enctype="multipart/form-data"-->
<form method="post" enctype="multipart/form-data" action="ImageUpload.ashx">
<input type="file" name="imgFile" />
<input type="submit" value="上传"/>
</form>
</body>
</html>

模板中包含两个input标签,类型分别为“file”和“submit”,其中,form表单的method属性必须为“post”,enctype为“multipart/form-data”。

(2). 在ImageUpload.html模板中判断一下所上传的文件是否为图片:

<script src="../scripts/jquery-1.12.4.min.js"></script>
<!--如果监听到上传的文件的后缀不是图片,那就将file得到的内容设为空-->
<script type="text/javascript">
$(function () {
$(":file").change(function () {
var fileName = $(this).val();
var ext = fileName.substr(fileName.lastIndexOf('.'));
if (ext == ".jpeg" || ext == ".jpg" || ext == ".png" || ext == ".gif") {
return true;
} else {
$(this).val("");
}

});
});
</script>

(3). 新建一个名为ImageUpload.ashx的一般处理程序,为保证上传的文件是图片,需要在后台再次判断一下所传文件的格式(因为浏览器中可以改前台代码):

using System;
using System.IO;
using System.Web;

namespace ThreeLayerWebDemo.FileUpload
{
/// <summary>
/// ImageUpload 的摘要说明
/// </summary>
public class ImageUpload : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
//context.Response.Write("Hello World");
//后台拿到上传来的图片(拿到名为imgFile的input标签的文件)
var file =context.Request.Files["imgFile"];

//后台也要对拿到的数据是否为图片进行校验(因为前台可以通过浏览器改代码,前台校验完了需要后台再拦截一下)
var ext= Path.GetExtension(file.FileName);
if (!(ext==".jpeg"||ext==".jpg"||ext==".png"||ext==".gif"))
{
context.Response.Write("shit,你传的不是图片");
context.Response.End();
}
else
{
//上传的文件保存到目录(为了保证文件名不重复,加个Guid)
string path = "/Upload/" + Guid.NewGuid().ToString() + file.FileName;
file.SaveAs(context.Request.MapPath(path));//必须得是相对路径

//把图片显示到前端让用户看得到
string str = string.Format("<html><head></head><body><img src='{0}'/></body></html>",
path);//必须得是绝对路径!!!!
context.Response.Write(str);
}

}

public bool IsReusable
{
get
{
return false;
}
}
}
}

转载于:https://www.cnblogs.com/zoujinhua/p/10714821.html

ASP.NET学习笔记 —— 一般处理程序之图片上传相关推荐

  1. ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)

    ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...

  2. 【报错笔记】在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录。

    在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录. 我使用UUID生成8级目录,在webapp下创建目录,将图片传进 ...

  3. (白帽子学习笔记)前渗透——文件上传upload labs

    读者需知 1.本文仅供学习使用,由于传播和利用此文所造成的损失均由使用者本人负责,文章作者不为此承担责任 2.本文参考了一些文章,如有侵权请联系本人删除 第一关--前端验证 1.将浏览器中的JS代码禁 ...

  4. Spring Boot基础学习笔记14:实现文件上传功能

    文章目录 零.学习目标 一.文件上传概述 二.实现文件上传功能 (一)创建Spring Boot项目 (二)整合Bootstrap (三)编写文件上传页面 (四)编写项目配置文件 (五)编写文件上传控 ...

  5. Express学习笔记(八)—— 文件上传与下载

    文件上传 安装:npm install multer --save 导入 let multer=require('multer') let fs=require('fs') 初始化上传对象 // 配置 ...

  6. CTF学习笔记20:iwebsec-文件上传漏洞-05-htaccess文件上传

    本练习最终只能上传图片,关键要让图片文件可以调用,也就是作为php解析. 一.通过之前的方法均不能上传php文件 通过burpsuite配合改扩展名.大小写.双写等手段均不上传成功. 二.编写并上传. ...

  7. CTF学习笔记22:iwebsec-文件上传漏洞-07-条件竞争文件上传

    一.正常上传php文件被删除 你这么暴力,刚上传就删除,解决思路就是不停地上传,你要接收文件.判断文件.删除文件总要时间吧: 那我见缝插针,不停地调用上传的文件,一旦成功就写入另一ma,也就是ma中m ...

  8. python 网盘上传_python学习笔记 day32 实现网盘上传下载功能

    1. 作业需求 借助socket模块实现server端和client端的交互,拟实现网盘上传下载的功能: 上传: client端发送请求,把本地的文件上传给server端,server端负责接收,然后 ...

  9. 前端学习(2771):图片上传

最新文章

  1. Java的多线程问题追根溯源。
  2. I/O复用之 EPOLLONESHOT 事件
  3. docker 及 docker-compose 的快速安装和简单使用
  4. Git生成ssh密钥指定文件
  5. 《sort命令的k选项大讨论》-linux命令五分钟系列之二十七
  6. Keras中的时间分布层TimeDistributed Layer使用教程
  7. Silverlight实用窍门系列:43.Silverlight从ListBox拖拽图标到另一ListBox
  8. android mds文件,安卓手机如何打开.mdf文件
  9. Twaver-HTML5基础学习(24)快速查找(QuickFinder)
  10. 计算机程序运行异常处理,Win7电脑运行程序出现appcrash错误怎么解决?
  11. msn一直登陆不上,没有办法只好启用meebo!
  12. c++计算圆柱体表面积
  13. 使用安卓模拟器时提示关闭hyper-v
  14. 神经网络深度(Deepth)的影响
  15. 五位杰出的中国女科学家--巾帼不让须眉,见证科技中的“她力量”
  16. win7 64位系统web项目导出Excel问题汇总
  17. 安全性和保密性设计---系统的安全性设计
  18. phpstudy基础介绍
  19. python求二叉树高度_求二叉树高度代码报错,求大佬解答
  20. 2021全国大学生数学建模竞赛D题思路

热门文章

  1. 微信小程序接入腾讯地图sdk地图 用户自选位置。踩坑+代码实现
  2. gdb基本命令 与 技巧
  3. 每天一道LeetCode-----找到二叉树所有和为给定值的路径
  4. creator找不到编译器 qt_VS2017直接使用QT库创建程序
  5. python常见的文件操作:打开、创建等
  6. 学习编程的基础四大件
  7. CentOS 7.6 安装 Mysql8.0.17 rpm-bundle.tar解包 rpm安装(个人未验证)
  8. 剑指offer反转链表(C++实现|测试用例|迭代法和递归法)
  9. Linux多线程之线程同步(条件变量)
  10. 函数默认形参与占位参数