惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
宝玉的分享
宝玉的分享
月光博客
月光博客
小众软件
小众软件
Jina AI
Jina AI
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
G
Google Developers Blog
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale

博客园 - goooto

Spring4.1新特性——Spring缓存框架增强(转) Spring整合Ehcache管理缓存(转) 《权力的游戏》第七季片场照曝光 MINA2 框架详解(转) Docker简明教程(转) IIS7.5 Gzip压缩配置 UML 依赖 关联 聚合 组合 亲属称谓 C#命名规范(微软官方版) MongoDB学习笔记(六) MongoDB索引用法和效率分析(转) MongoDB学习笔记(五) MongoDB文件存取操作(转) MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系(转) MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据(转) MongoDB学习笔记(二) 通过samus驱动实现基本数据操作(转) MongoDB学习笔记(一)MongoDB介绍及安装(转) Log4net配置相关 VS2010快捷键大全 JQuery中得到Element真实top、left、height和width属性值的对象 - goooto - 博客园 WindowsService注册
以字节流上传文件
goooto · 2011-11-20 · via 博客园 - goooto

public string SaveFile(byte[] binData, string filePath, string fileName, int type, string fileType)
       {

           ///定义并实例化一个内存流,以存放提交上来的字节数组。
           MemoryStream m = new MemoryStream(binData);
           FileStream fileStream = null;
           try
           {
               string savePath = System.Configuration.ConfigurationSettings.AppSettings["DcFilePath"];

               //不是绝对路径 
               if (savePath.IndexOf(":\\") < 0) savePath = Server.MapPath(savePath);

               //没有反斜杠
               if (!savePath.EndsWith("\\")) savePath += "\\";

               //目录
               savePath += filePath;

               //没有文件夹,创建文件夹

               if (!Directory.Exists(savePath))
               {
                   Directory.CreateDirectory(savePath);
               }

               if (type == 0)
               {
                   fileName = "\\" + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
               }
               if (!File.Exists(savePath + fileName + fileType))
               {
                   fileName = "\\" + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
               }
               fileName = fileName + fileType;
               //写文件
               fileStream = new FileStream(savePath + fileName, FileMode.Create);
               m.WriteTo(fileStream);
               StreamWriter sw=new StreamWriter(savePath+".txt");
               sw.WriteLine(binData.Length.ToString());
               sw.Close();
                return "filePath.Replace("\\", "/") + fileName.Replace("\\", "/");
           }
           catch
           {
               return "上传文件出错|1";
           }
           finally
           {
               m.Close();
               fileStream.Close();
           }

       }

有时候下面的函数会报错,也不知道什么原因.   还是用上传控件自带的转换.

#region 将文件转化成2进制流 ConvertFileStreamToByteBuffer
  /// </summary> 
  /// <param name="filename"></param> 
  /// <returns></returns> 
  public byte[] getBinaryFile(string filename)
  {
      if (File.Exists(filename))
      {
          FileStream s = null;
          try
          {
              //打开现有文件以进行读取。 
              s = File.OpenRead(filename);
              return this.ConvertStreamToByteBuffer(s);
          }
          catch
          {
              return new byte[0];
          }
          finally
          {
              s.Close();
          }
      }
      else
      {
          return new byte[0];
      }
  }
  #endregion

  #region 将流文件转化成2进制字节数组Convert FileStream Into Byte
  /// </summary> 
  /// <param name="theStream"></param> 
  /// <returns></returns> 
  public byte[] ConvertStreamToByteBuffer(System.IO.Stream theStream)
  {
      int b1;
      MemoryStream tempStream = new System.IO.MemoryStream();

      try
      {
          while ((b1 = theStream.ReadByte()) != -1)
          {
              tempStream.WriteByte(((byte)b1));
          }
          return tempStream.ToArray();
      }
      catch
      {
          return new byte[0];
      }
      finally
      {
          tempStream.Close();
      }
  }
  #endregion