记下Html标签上传图片

这篇博客详细记录了使用HTML标签在ASP.NET中上传图片的步骤,包括获取文件数据、验证文件非空、重命名文件、创建目录以及上传操作。同时提出了关于HTTP协议在文件上传中的工作原理以及enctype属性生效问题的思考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

恩,如果不记下来,记忆就会模糊掉。


希望自己下次看见这篇博客的时候,会解决掉疑问

--------------------------------------------------------------------

<form method="post" enctype="multipart/form-data" action="Upload.ashx" >
        <input type="file" name="fileName" />
        <input type="submit" name="上传" />
    </form>

enctype属性设置为multipart/form-data,浏览器会把上传的文件名和文件数据放在结构体内,传给Action中指向的文件中。


1.第一步,我们要首先获取到,传过来的结构体内的文件数据。

HttpPostedFile file=context.Request.Files[0];
因为这里我们设置只有一个file,只会传一个文件。所以后面index中的值直接给0。


2.验证用户点击上传表单之后,file中是否为空

if (file.ContentLength > 0)
这里用的验证是ContentLength 获得传递Http传递的实体长度,file为空,则返回false


3.获得用户上传文件的,文件名及拓展名。

string oldfileName = Path.GetFileName(file.FileName); //获得文件名+拓展名
string fileExt = Path.GetExtension(oldfileName);     //获得拓展名


4.判断用户上传的文件,是否为图片。验证后缀名

...省略

5.用Guid重写用户上传的文件名

string newFileName = Guid.NewGuid().ToString();


6.新建目录,并判断站点中是否含有此路径,如没有则新建

string dir = "/UpLoad/" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day;
                if (!Directory.Exists(context.Request.MapPath(dir)))
                {
                    Directory.CreateDirectory(context.Request.MapPath(dir));
                }

7.拼凑文件名-带路径。

 string fullFileName = dir + newFileName + fileExt;

8.上传文件

file.SaveAs(context.Request.MapPath(fullFileName));

9.输出

..略

------------------------------------------------------------------------------------------------------------------------------

留给自己的问题。

1.上传一个文件,那么在浏览器内部发生了什么?Http协议怎么传输?

2.为什么enctype写在action后不生效?




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值