/// <summary>
/// 存储事件:将图片转换为Byte数组并依据题号存储进相应字段中
/// </summary>
        private void button2_Click(object sender, EventArgs e)
        {
            this.imageByte = SetImageToByteArray(this.imageFileName);
        }
/// <summary>
///图片转换为二进制数组
/// </summary>
public byte[] SetImageToByteArray(string fileName)
        {
            FileStream fs = new FileStream(fileName, FileMode.Open);
            int streamLength = (int)fs.Length;
            byte[] image = new byte[streamLength];
            fs.Read(image, 0, streamLength);
            fs.Close();
            return image;
        }

解决方案 »

  1.   

    public byte[] SetImageToByteArray(string fileName)
            {
                FileStream fs = new FileStream(fileName, FileMode.Open);
                int streamLength = (int)fs.Length;
                byte[] image = new byte[streamLength];
                fs.Read(image, 0, streamLength);
                fs.Close();
                return image;
            }改成
    public byte[] SetImageToByteArray(string fileName)
    {
    return File.ReadAllBytes(fileName);
     }
      

  2.   

    本帖最后由 net_lover 于 2012-02-23 11:46:02 编辑
      

  3.   

    对于FileStream,使用using语法(可以使用到它的IDisposable接口功能及时关闭)。不过asp.net是多线程的。而多线程下造成对同一文件的访问冲突,这是很“正常”的。你应该逻辑设计来避免,也就是说要重新将业务逻辑梳理一遍,单纯靠“技术”方式只能阻塞甚至死锁。
      

  4.   

    举个例子吧。假设你允许同一个页面上有不止一个FileUpload,或者考虑到不同客户端都可能几乎同时提交FileUpload,那么你的程序中就不应该用 FileName 作为本地临时存储图片文件的名字,而应该随机起名,确保它们在本地基本上不重复。