.NET 文件上传,自动判断续传

         最近与手机端进行交互,需要为手机端提供文件上传接口,自己上网搜索下,整理了些文件上传的方法。

         原文参考地址:http://blog.csdn.net/az44yao/article/details/20287633

     http://blog.csdn.net/az44yao/article/details/20287633

  /// 
        /// 将传进来的文件转换成字符串
        /// 
        /// 待处理的文件路径(本地或服务器)
        /// 
        public static string FileToBinary(string FilePath)
        {
            FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read);
            //利用新传来的路径实例化一个FileStream对像
            int fileLength = Convert.ToInt32(fs.Length);
            //得到对像大小
            byte[] fileByteArray = new byte[fileLength];
            //声明一个byte数组
            BinaryReader br = new BinaryReader(fs);
            //声明一个读取二进流的BinaryReader对像
            for (int i = 0; i < fileLength; i++)
            {//循环数组
                br.Read(fileByteArray, 0, fileLength);
                //将数据读取出来放在数组中
            }

            string strData = Convert.ToBase64String(fileByteArray);
            //装数组转换为String字符串
            return strData;
        }

       
        /// 
        /// 装传进来的字符串保存为文件
        /// 
        /// 需要保存的位置路径
        /// 需要转换的字符串
       /// 返回上传文件大小(单位/kb)
       /// 
        public static bool BinaryToFile(string path, string binary, out Int32 fileSize)
        {
              fileSize = 0;
            try
            {
              
                //打开上次下载的文件或新建文件
                Int32 lStartPos = 0;
                FileStream fs;
                if (System.IO.File.Exists(path))
                {
                    fs = System.IO.File.OpenWrite(path);
                    lStartPos =MyTool.MyUnity.ObjToInt32( fs.Length);
                    fs.Seek(lStartPos, System.IO.SeekOrigin.Current);   //移动文件流中的当前指针
                }
                else
                {
                   // 利用新传来的路径实例化一个FileStream对像
                    fs = new FileStream(path, FileMode.Create, FileAccess.Write);
                    lStartPos = 0;
                }
            //实例化一个用于写的BinaryWriter
            BinaryWriter bw = new BinaryWriter(fs);
            byte[] allBytes = Convert.FromBase64String(binary);//将传过来的二进制流放入数据中
            Int32 offsetLenth =  allBytes.Length - lStartPos;//偏移量
            bw.Write(allBytes, lStartPos, offsetLenth);
            fileSize =MyUnity.ObjToInt32(Math.Ceiling(allBytes.Length/1024m));//计算文件大小,以kb计算
            bw.Close();
            fs.Close();
            }
            catch (Exception)
            {
               return false;
            }
            return true;
        }


你可能感兴趣的:(Web后端)