Bekommen Binäre Daten aus einer SQL-Datenbank
Ich habe eine ASP .Net (3.5) website. Ich habe den folgenden code, der eine Datei hochlädt, die als eine Binärdatei, die eine SQL-Datenbank:
Print("
protected void UploadButton_Click(object sender, EventArgs e)
{
//Get the posted file
Stream fileDataStream = FileUpload.PostedFile.InputStream;
//Get length of file
int fileLength = FileUpload.PostedFile.ContentLength;
//Create a byte array with file length
byte[] fileData = new byte[fileLength];
//Read the stream into the byte array
fileDataStream.Read(fileData, 0, fileLength);
//get the file type
string fileType = FileUpload.PostedFile.ContentType;
//Open Connection
WebSysDataContext db = new WebSysDataContext(Contexts.WEBSYS_CONN());
//Create New Record
BinaryStore NewFile = new BinaryStore();
NewFile.BinaryID = "1";
NewFile.Type = fileType;
NewFile.BinaryFile = fileData;
//Save Record
db.BinaryStores.InsertOnSubmit(NewFile);
try
{
db.SubmitChanges();
}
catch (Exception)
{
throw;
}
}");
Die Dateien, die hochgeladen werden, sind PDF-Dateien, Können Sie bitte helfen Sie mir schriftlich den code, um die PDF-Datei aus der SQL-Datenbank und zeigen Sie Sie im browser. (Ich bin in der Lage zu Holen Sie sich die Binär-Datei unter Verwendung einer linq-Abfrage, aber nicht wissen, wie die Verarbeitung der bytes)
InformationsquelleAutor | 2008-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
So sind Sie wirklich nur nach, wie, um ein byte-array in ASP.NET? Es klingt wie die Datenbank Teil ist irrelevant, da Sie gesagt haben Sie sind in der Lage zu Holen Sie sich die binary-Datei mit einer LINQ-Abfrage.
Wenn dem so ist, schauen Sie auf HttpResponse.BinaryWrite. Sie sollten auch die content-type der Antwort entsprechend, z.B. application/pdf.
InformationsquelleAutor Jon Skeet
Wie groß sind die Dateien? Riesige Puffer (d.h. byte[fileLength]) sind in der Regel eine schlechte Idee.
Persönlich, ich würde Dinge sehen, wie diese und diese, die zeigen, das Lesen/schreiben von Daten-streams (das zweite zeigt das schieben der stream als http-response). Aber aktualisiert, um die Verwendung von varchar(max) ;-p
InformationsquelleAutor Marc Gravell
protected void Test_Click(object sender, EventArgs e)
{
Ich versuchte dies und das hat nicht funktioniert. Ich bekomme einen kompilieren Fehler auf dieser Linie "MyFileStream = new FileStream ("GetFile", FileMode.Open);"
Ich nicht sicher, wo ich bin, was falsch läuft, ist es aufgrund der Art und Weise, die ich gespeichert habe?
Könnte ich ein Beispiel dazu?
InformationsquelleAutor
Beim speichern von binären Dateien in der SQL Server-es fügt ein OLE-Header, um die Binär-Daten. So müssen Sie den Streifen, der header, bevor Sie Sie tatsächlich Lesen das byte[] in die Datei. Hier ist, wie Sie dies tun.
Nachdem Sie diesen code ausführen, strippedData enthält die eigentliche Datei Daten. Sie können dann mit MemoryStream-oder FileStream-I/O durchführen, die auf das byte[].
Hoffe, das hilft..
Ruchit S.
InformationsquelleAutor this. __curious_geek