tabela de servidor sql arquivo carregado ASP.NET loja
-
11-09-2019 - |
Pergunta
Como você armazenar um arquivo que foi carregado por um ASP.net webform em um campo sql server 2005 varbinary (max)?
Aqui está o que eu tenho até agora:
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?
}
A idade exemplo ado.net simples seria bom. Então, seria um LINQ to SQL exemplo.
Graças
Solução
Não é bom tutorial sobre como fazer upload de um arquivo diretamente no banco de dados em 4GuysFromRolla
Outras dicas
Aqui está como eu fiz isso usando 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);
}
Este é geralmente considerado uma forma ruim. Ele incha seu banco de dados e realmente não oferecem quaisquer vantagens sobre manter todos os arquivos em uma pasta do disco rígido e apenas armazenar o local do arquivo no DB. Tem certeza de que quer fazer isso?
Aqui está uma refactor rápida da resposta de Ronnie:
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
HTH