var filename = Server.MapPath("fbb.jpg");
        FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
        byte[] infbytes = new byte[(int)fs.Length];
        fs.Read(infbytes, 0, infbytes.Length);
        fs.Close();
        File.WriteAllBytes(Server.MapPath("2.jpg"), infbytes);
这样的能正常保存,但是下面就不行,为什么呢?
        var filename = Server.MapPath("fbb.jpg");
        FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
        byte[] infbytes = new byte[(int)fs.Length];
        fs.Read(infbytes, 0, infbytes.Length);
        fs.Close();
        //return infbytes; 
        var pic = Encoding.Default.GetString(infbytes);
        File.WriteAllBytes(Server.MapPath("2.jpg"), Encoding.Default.GetBytes(pic));有人说你这不吃饱撑的么?用上面方法就行了,但是我告诉大家,这里只是些个例子,因为实际程序中需要转换,高手们来帮忙啊。

解决方案 »

  1.   

    Encoding 是用来处理字符串的,对被转的格式有要求,非字符串的转得过去未必转得回来,要根据具体情况选择合适编码方式
      

  2.   

     var pic = Encoding.Default.GetString(infbytes);
     File.WriteAllBytes(Server.MapPath("2.jpg"), Encoding.Default.GetBytes(pic));确实吃饱了撑着图片和字符串完全不搭界 不要乱转
      

  3.   

    一般图片用
    Convert.ToBase64String()
    Convert.FromBase64String()
    这对方法进行转换