• 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等其他地方,我这里是测试,直接返回到前台了

    }

  • 相关阅读:
    Django contenttypes 组件
    CPU 的工作原理
    Redis基础
    面向对象中的__slots__
    DRF 的解析器和渲染器
    DRF的认证、权限 和 限制
    DRF中的版本控制
    REST framework 视图
    Java多线程(1):3种常用的实现多线程类的方法
    Java多线程(2):线程加入/join()
  • 原文地址:https://www.cnblogs.com/liujiekun/p/7056078.html
Copyright © 2020-2023  润新知