html加C#上传文件
最近在学上传文件部分内容,包括创建文件夹,设置文件夹属性,上传文件并保存。
前台代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head> <body>
<form runat="server" id="form1" method="post" enctype="multipart/form-data">
<input name="f" type="file" />
<input name="s" type="submit" />
</form>
</body>
</html>
后台代码:
System.Web.HttpFileCollection _file = System.Web.HttpContext.Current.Request.Files;
if (_file.Count > 0)
{
//文件大小
long size = _file[0].ContentLength;
//文件类型
string type = _file[0].ContentType;
//文件名
string name = _file[0].FileName;
//文件格式
string _tp = System.IO.Path.GetExtension(name);
if (_tp.ToLower() == ".jpg" || _tp.ToLower() == ".jpeg" || _tp.ToLower() == ".gif" || _tp.ToLower() == ".png" || _tp.ToLower() == ".swf")
{
//获取文件流
System.IO.Stream stream = _file[0].InputStream;
//保存文件
string saveName = DateTime.Now.ToString("yyyyMMddHHmmss") + _tp;
string path = Server.MapPath("") + "/upload/area/" + saveName;
_file[0].SaveAs(path);
}
}
后来想到,如何判断文件夹是否存在呢?如果不存在就直接保存就会出错,或者已经存在的话,会不会覆盖掉?
使用如下方法,判断是否存在,不存在则创建
if (!Directory.Exists(sPath))
{
Directory.CreateDirectory(sPath);
}
//后来创建了文件夹,还是报路径错误,原因猜想:1,没有包含在项目中。2,没有权限。
解决方法:
1,手动将其包含在项目中就可以了,确实可以解决,但是非常不爽,因为程序运行在服务器上,你不可能程序创建了文件夹,然后手动去把他再加进项目中吧。
2,网上查说是创建的文件夹为只读属性了,但是我手动把程序创建的文件夹属性只读去掉,还是不成功,但是使用下面的代码将文件夹属性“只读”去掉,上传就成功了。
去除文件夹的只读属性: System.IO.DirectoryInfo DirInfo = new DirectoryInfo(“filepath”);
DirInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory;
去除文件的只读属性: System.IO.File.SetAttributes("filepath", System.IO.FileAttributes.Normal);
于是结束后,将新建文件夹部分代码重新整理了一下,变成了:
string _tp = System.IO.Path.GetExtension(name);
if (_tp.ToLower() == ".jpg" || _tp.ToLower() == ".jpeg" || _tp.ToLower() == ".gif" || _tp.ToLower() == ".png" || _tp.ToLower() == ".swf")
{
string saveName = DateTime.Now.ToString("yyyyMMddHHmmss") + _tp;
string file = "/" + DateTime.Now.ToString("yyyyMMdd")+"/";
string path = Server.MapPath("~")+file;
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
DirectoryInfo dirInfo = new DirectoryInfo(path);
dirInfo.Attributes = FileAttributes.Normal&FileAttributes.Directory;
}
_file[0].SaveAs(path+saveName);
ViewBag.imgPath = file + saveName;//可以保存至数据库或者xml等其他地方,我这里是测试,直接返回到前台了
}
html加C#上传文件的更多相关文章
- 上传文件时文件类型限制 <input id="File1" type="file" accept=""/>
在做项目项目中经常需要上传文件,类型也就那几种.虽然在js中加了上传文件类型的限制,但是为了减少因为用户选择不当而造成的反复检验.可以在input标签上加上accept属性.这种限制只是优化了选择文件 ...
- 为什么上传文件的表单里面要加一个属性enctype=multipart/form-data?
首先知道enctype这个属性管理的是表单的MIME编码.共有三个值可选:1.application/x-www-form-urlencoded2.multipart/form-data3.text/ ...
- 为什么上传文件的表单里要加个属性enctype
为什么上传文件的表单里要加个属性enctype 上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上 ...
- iOS开发——网络Swift篇&NSURLSession加载数据、下载、上传文件
NSURLSession加载数据.下载.上传文件 NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的 ...
- Thinkphp 3.0版本上传文件加图片缩略图实例解析
先看html加个表单,注意这里的action 路径要选 对. <div> <form action="__URL__/add_img" enctype=" ...
- Swift - 使用NSURLSession加载数据、下载、上传文件
NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的sharedSession()和dataTaskWithR ...
- 为什么上传文件的表单里要加个属性enctype----摘录
上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上传表单要这么写,知其然而不知其所以然.那到底为什 ...
- uploadify加ASP.NET MVC3.0上传文件(可多条)
页面代码: <div id="fileQueuePlug"></div> <input type="file" name=&quo ...
- ajax 上传文件,显示进度条,进度条100%,进度条隐藏,出现卡顿就隐藏进度条,显示正在加载,再显示上传完成
<form id="uploadForm" method="post" enctype="multipart/form-data"&g ...
随机推荐
- Python turtle库的画笔控制说明
turtle.penup() 别名 turtle.pu() :抬起画笔海龟在飞行 turtle.pendown() 别名 turtle.pd():画笔落下,海龟在爬行 turtle.pensize(w ...
- spring boot中集成Redis
1 pom.xml文件中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <arti ...
- Java基础—控制流程语句(条件语句与循环结构)
与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流程.Java的控制流程结构与C和C++的控制流程机构一样,只有很少的例外情况.没有goto语句,但break语句可以带标签,可以利用它实 ...
- JavaScript笔记(二)
一.JavaScript面向对象 1.类 constructor 构造函数 constructor() 方法是类的构造函数(默认方法),用于传递参数,返回实例对象,通过new命令生成实例时,自动调用该 ...
- OpenCV常用图像拼接方法(一) :直接拼接
OpenCV常用图像拼接方法将分为四部分与大家分享,这里是第一种方法,欢迎关注后续. OpenCV常用图像拼接方法(一) :直接拼接,俗称硬拼,就是简单的将两张图片合并成一张大图. 方法比较简单,这里 ...
- MySQL数据库的约束
一 默认值约束 约束语句 default ‘默认值’ 在建立表的时候在想要加默认约束的字段名,数据类型后面加default ‘默认值’ 例如 : create table emp( uid int ...
- C#LeetCode刷题之#434-字符串中的单词数(Number of Segments in a String)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3941 访问. 统计字符串中的单词个数,这里的单词指的是连续的不是 ...
- 基于.NetCore3.1系列 —— 日志记录之自定义日志组件
一.前言 回顾:日志记录之日志核心要素揭秘 在上一篇中,我们通过学习了解在.net core 中内置的日志记录中的几大核心要素,在日志工厂记录器(ILoggerFactory)中实现将日志记录提供器( ...
- 第三方登陆--QQ登陆--单体应用
从零玩转第三方QQ登陆 下面有源码 前后端分离版本 一样的思路 https://www.cnblogs.com/Yangbuyi/p/13194007.html 第三方GITEE登陆 https:// ...
- django自带orm妙用
django对数据库数据进行处理方式通常有以下几种方式: 1.使用原生sql对数据库进行处理:pymysql,cx_oracle 2.使用外置orm模块来对数据库进行处理:sqlalchemy 3.使 ...