码迷,mamicode.com
首页 > Windows程序 > 详细

html加C#上传文件

时间:2017-06-25 17:50:22      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:key   判断   ext   UI   html   项目   attr   collect   获取   

最近在学上传文件部分内容,包括创建文件夹,设置文件夹属性,上传文件并保存。

前台代码:

<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#上传文件

标签:key   判断   ext   UI   html   项目   attr   collect   获取   

原文地址:http://www.cnblogs.com/liujiekun/p/7056078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!