1. 如何存储小的附件?(8K以内的)
2. 如何存储大附件? (8K以上的) 用什么字段来存?各种方法有什么优缺点?
3. 如何下载以上两种附件?

解决方案 »

  1.   

    4. 如何实现断点续传?
    5. 2005 新增加了XML字段,该字段是否能存储附件?如果能存储,有什么优缺点?
      

  2.   

    如果是存在binary或者image这样的字段里面,事实上也只是在表中存个指针,附件存放的物理位置还是在别的地方。
    你说的这种方法和上面这种方法比优势在哪里呢?如何保证存放附件的安全性?
      

  3.   

    sql server本身就不怎么安全
    存個路徑,加密好了
    附件存的物理位置,那是OS層面的安全性了
      

  4.   

    谢谢!这种方式和直接存在数据库里面比有什么优缺点呢?
    另外,下面两个问题能否解答一下?谢谢! (ASP.Net)
    4. 如何实现断点续传? 
    5. 2005 新增加了XML字段,该字段是否能存储附件?如果能存储,有什么优缺点?
      

  5.   

    另外,如果附件比较小,我想存在binary字段里面,能用sql语句实现吗?怎么实现呢?谢谢
      

  6.   


    //将图片转成二进制 
    private void UploadImage()
        {//保存图片到数据库
            Int32 intFile = this.ProImage.PostedFile.ContentLength;
            try
            {
                Byte[] PhotoArray = new Byte[intFile];                         //在些处将图片转为二进制            String physicPath = Server.MapPath("~/upload/");          //文件所在服务器的相对路径
                String filePath = this.ProImage.PostedFile.FileName;            //文件所在服务器的物理路径
                String fileExt = filePath.Substring(filePath.LastIndexOf("."));       //文件扩展名            //String FileNme = this.ProImage.
                UploadImageName = common.UpLoadAndSave(PhotoArray, fileExt, "upload/", physicPath);
                UploadImageName = "upload/" + UploadImageName;
                MessageBox.Show(this, "文件上传成功!");
            }
            catch (FileNotFoundException ex)
            {
                throw ex;
            }
        }
    /// <summary>
            /// 文件上传
            /// </summary>
            /// <param name="data">文件数据流</param>
            /// <param name="fileExt">文件扩展名</param>
            /// <param name="virPath">文件所在服务器的相对路径,不包括文件名</param>
            /// <param name="physicPath">文件所在服务器的物理路径,不包括文件名</param>
            /// <returns>文件名</returns>
            public static string UpLoadAndSave(byte[] data, string fileExt, string virPath, string physicPath)
            {
                // 返回文件物理地址,修改虚拟地址
                if (data == null || virPath == null || fileExt == null || physicPath == "")
                {
                    throw new Exception(" 非法参数");
                }            return SaveToServer(data, fileExt, physicPath, data.Length);
            }//将二进制图片转换成jpg格式 //C# codevoid savejpg(String NAME) 

    SqlConnection CON = new SqlConnection(); 
    SqlCommand CMD = new SqlCommand("SQL"); FileStream fs; 
    BinaryWriter bw; int bufferSize = 1024; 
    byte[] outbyte = new byte[bufferSize]; 
    long retval; 
    long startIndex = 0; CON.Open(); 
    SqlDataReader myReader = CMD.ExecuteReader(CommandBehavior.SequentialAccess); while (myReader.Read()) 

    fs = new FileStream(NAME, FileMode.OpenOrCreate, FileAccess.Write); 
    bw = new BinaryWriter(fs); startIndex = 0; 
    retval = myReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); while (retval > 0) 

    bw.Write(outbyte); 
    bw.Flush(); 
    startIndex += bufferSize; 
    retval = myReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); 
    } bw.Write(outbyte); 
    bw.Flush(); bw.Close(); 
    fs.Close(); 
    } myReader.Close(); 
    CON.Close(); } 
      

  7.   

    谢谢!你给的上面的这种方法就是存在物理路径的吧?
    能把SaveToServer也贴上来吗?多谢!
    return SaveToServer(data, fileExt, physicPath, data.Length);
      

  8.   

    谢谢!你给的上面的这种方法就是存在物理路径的吧?
    能把SaveToServer也贴上来吗?多谢!
    return SaveToServer(data, fileExt, physicPath, data.Length);