当前位置: 代码迷 >> ASP.NET >> StreamObject.Read 无法访问已关闭的文件,该如何解决
  详细解决方案

StreamObject.Read 无法访问已关闭的文件,该如何解决

热度:7851   发布时间:2013-02-25 00:00:00.0
StreamObject.Read 无法访问已关闭的文件
asp.net 2005(vb)写的多个文件上传,调试没有问题,但是发布后出现问题。

代码如下
 For Each HIF In hifB
  Dim fn As String = System.IO.Path.GetFileName(HIF.PostedFile.FileName)
  Dim sFileName As String
  sFileName = HIF.PostedFile.FileName
  sFileName = Right(sFileName, Len(sFileName) - InStrRev(sFileName, "\"))
  Dim FileLength = 0
  '记录文件长度变量
  FileLength = HIF.PostedFile.ContentLength
  Dim StreamObject As System.IO.Stream = HIF.PostedFile.InputStream

  '文件临时储存Byte数组
  Dim FileByteArray(FileLength) As Byte
  '读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
  Dim x = HIF.PostedFile.FileName.LastIndexOf("\"), File_name = Mid(HIF.PostedFile.FileName, x + 2)
  '读文件内容到FileByteArray数组







下边的语句出错误:
  StreamObject.Read(FileByteArray, 0, FileLength)








  HIF.PostedFile.SaveAs("c:\\images\\" & i & fn)
  sSQL = "insert into sysMailAffix (MailID,SerialID,AffixName,Type,FSize,Affix) values (@MailID,@SerialID,@AffixName,@Type,@FSize,@Affix)"
  objCom = New SqlClient.SqlCommand(sSQL, objCon)
  objCom.Parameters.Add("@Affix", SqlDbType.Binary, FileLength).Value = FileByteArray
  objCom.Parameters.Add("@mailid", SqlDbType.Int).Value = 233
  objCom.Parameters.Add("@serialid", SqlDbType.Int).Value = i
  objCom.Parameters.Add("@affixname", SqlDbType.NVarChar, 50).Value = strTo & sFileName
  objCom.Parameters.Add("@type", SqlDbType.NVarChar, 50).Value = HIF.PostedFile.ContentType
  objCom.Parameters.Add("@FSize", SqlDbType.Float).Value = FileLength
  objCom.ExecuteScalar()
  Next




---------------------------

错误信息:无法访问已关闭的文件

------解决方案--------------------------------------------------------
懒的看,给个类吧
C# code
    public class upfile    {        private string path = null;        private string fileType = null;        private int sizes = 0;        /// <summary>        /// 初始化变量        /// </summary>        public upfile()        {            path = @"Userpic\";  //上传路径            fileType = "jpg|gif|bmp";            sizes = 1000 * 1000;             //传文件的大小,默认200KB        }        /// <summary>        /// 设置上传路径,如:uploadimages\        /// </summary>        public string Path        {            set            {                path = value;            }        }        /// <summary>        /// 设置上传文件大小,单位为KB        /// </summary>        public int Sizes        {            set            {                sizes = value * 1024;            }        }        /// <summary>        /// 设置上传文件的类型,如:jpg|gif|bmp        /// </summary>        public string FileType        {            set            {                fileType = value;            }        }        /// <summary>        /// 上传图片        /// </summary>        /// <param name="name">上传控件名称</param>        /// <param name="creatDirectory">true则以当前时间创建文件夹,false则为设置的文件夹</param>        /// <returns>返回上传图片的相对路径</returns>        public string fileSaveAs(System.Web.UI.WebControls.FileUpload name, bool creatDirectory)        {            try            {                string filePath = null;                //以当前时间修改图片的名字或创建文件夹的名字                string modifyFileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();                //获得站点的物理路径                string uploadFilePath = null;                //如果为true则以当前时间创建文件夹,否则为设置的文件夹                if (creatDirectory)                {                    uploadFilePath = System.Web.HttpContext.Current.Server.MapPath("~/") + @"\" + path + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + @"\";                }                else                {                    uploadFilePath = System.Web.HttpContext.Current.Server.MapPath("~/") + path;                }                //获得文件的上传的路径                string sourcePath = name.FileName.Trim();                //判断上传文件是否为空                if (sourcePath == "" || sourcePath == null)                {                    //message("您没有上传数据呀,是不是搞错了呀!");                    return null;                }                //获得文件扩展名                string tFileType = sourcePath.Substring(sourcePath.LastIndexOf(".") + 1);                //获得上传文件的大小                long strLen = name.PostedFile.ContentLength;                //分解允许上传文件的格式                string[] temp = fileType.Split('|');                //设置上传的文件是否是允许的格式                bool flag = false;                //判断上传文件大小                if (strLen >= sizes)                {                    message("上传的图片不能大于" + sizes + "KB");                    return null;                }                //判断上传的文件是否是允许的格式                foreach (string data in temp)                {                    if (data == tFileType.ToLower())                    {                        flag = true;                        break;                    }                }                //如果为真允许上传,为假则不允许上传                if (!flag)                {                    message("目前本系统支持的格式为:" + fileType);                    return null;                }                System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(uploadFilePath);                //判断文件夹否存在,不存在则创建                if (!dir.Exists)                {                    dir.Create();                }                filePath = uploadFilePath + modifyFileName + "." + tFileType;                name.PostedFile.SaveAs(filePath);                filePath = modifyFileName + "." + tFileType;                return filePath;            }            catch            {                //异常                message("出现未知错误!");                return null;            }        }        public bool fileIsExist(System.Web.UI.WebControls.FileUpload name)        {            return name.HasFile;        }        private void message(string msg, string url)        {            System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');window.location='" + url + "'</script>");        }        private void message(string msg)        {            System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');</script>");        }    }
  相关解决方案