Avatar billede slapstick Nybegynder
26. november 2008 - 14:29 Der er 6 kommentarer og
1 løsning

hente pdf fra blob felt i mysql

jeg har en mysql tabel med et blob felt der indeholder en pdf fil
jeg vil så gerne ha vist den pdf i en iframe uden at skulle ha gemt den på disk først..
er der nogen der har et eksempel på det eller noget lign.?
Avatar billede arne_v Ekspert
26. november 2008 - 14:54 #1
Du laver din iframe saa den peger paa en .aspx som saetter content type, henter BLOB ud
af databasen og streamer den til klienten.
Avatar billede aaberg Nybegynder
26. november 2008 - 14:55 #2
Til dette kan du bruge en Generic Handler. Højreklik på dit projekt og tryk "Add New Item...". Find en "Generic Handler", giv den et navn (F.eks. PDF_handler.ashx) og tryk "Add".

Her er noget eksempelkode til en generic handler.

<%@ WebHandler Language="C#" Class="Handler3" %>

using System;
using System.Web;

public class PDFHandler : IHttpHandler {
   
    public void ProcessRequest (HttpContext context)
    {

        byte[] pdfData = HentPDFDokumentFraDataabse(pdfId);       
        context.Response.ContentType = "application/pdf";
        context.Response.OutputStream.Write(pdfData, 0, pdfData.Length)
       
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}
Avatar billede arne_v Ekspert
26. november 2008 - 14:56 #3
Hvis den kan vaer ei memory saa noget a la:

    byte[] b = (byte[])cmd.ExecuteScalar();
    Response.ContentType = "xxxx/xxxx";
    Response.BinaryWrite(b);
Avatar billede aaberg Nybegynder
26. november 2008 - 14:58 #4
Jeg glemte lige at sige, at src attributten på din iframe skal indeholde navnet på din Generic handler og en pdfid querystring. eksempeltvis: PDFHandler.ashx?pdfid=123
Avatar billede slapstick Nybegynder
28. november 2008 - 12:50 #5
jamen det spiller jo bare..
aaberg smid et svar!

arne hvor store vil du sige filerne skal være før man ikke skal bruge memory?
Avatar billede aaberg Nybegynder
28. november 2008 - 13:58 #6
Her kommer svaret.

Hvor stor en fil kan være, før det giver memoryproblemer, kommer vel and på hardwaren. Og så kommer det and på hvor mange brugere som henter filen samtiddig. Hvis du vil undgå at bruge for meget memory, kan du du bruge ExecuteReader() i stedet for ExecuteScalar(). GetBytes() metoden på en DataReader, giver dig mulighed for at hente lidt af filen ud af gangen, så du kan streame indholdet til modtageren.
Avatar billede slapstick Nybegynder
28. november 2008 - 14:02 #7
smukt tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester