代码之家  ›  专栏  ›  技术社区  ›  Ronnie Overby

ASP.NET存储区上载的文件sql server表

  •  3
  • Ronnie Overby  · 技术社区  · 15 年前

    如何将ASP.net webform上载的文件存储到sql server 2005 varbinary(max)字段中?

    以下是我到目前为止的情况:

    protected void btnUpload_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < Request.Files.Count; i++)
        {
            StoreFile(Request.Files[i]);
        }
    }
    
    private void StoreFile(HttpPostedFile file)
    {
        // what do i do now?
    }
    

    谢谢

    4 回复  |  直到 15 年前
        1
  •  3
  •   Jose Basilio    15 年前

    关于如何将文件直接上传到数据库,有很好的教程 4GuysFromRolla

        2
  •  2
  •   Ronnie Overby    15 年前

    下面是我如何使用Linq To Sql实现这一点的:

    FilesDataContext db = new FilesDataContext();
    
    protected void btnUpload_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < Request.Files.Count; i++)
        {
            StoreFile(Request.Files[i]);
        }
    
        db.SubmitChanges();
    }
    
    private void StoreFile(HttpPostedFile file)
    {
        byte[] data = new byte[file.ContentLength];
        file.InputStream.Read(data, 0, file.ContentLength);
    
        File f = new File();
        f.Data = data;
        f.Filename = file.FileName;
        db.Files.InsertOnSubmit(f);
    }
    
        3
  •  1
  •   Spencer Ruport    15 年前

        4
  •  0
  •   InteXX    11 年前

    Public Shared Sub SaveUploadedFile(File As HttpPostedFile)
      Dim oFile As Db.File
    
      oFile = New Db.File
      oFile.Data = File.ToBytes
    End Sub
    
    <Extension()>
    Public Function ToBytes(File As HttpPostedFile) As Byte()
      ToBytes = New Byte(File.ContentLength - 1) {}
    
      Using oStream As Stream = File.InputStream
        oStream.Read(ToBytes, 0, File.ContentLength)
      End Using
    End Function