Results 1 to 6 of 6

Thread: hoe een document openen in browser?

  1. #1

    hoe een document openen in browser?

    De documenten zijn opgeslagen als blobs in een database.
    Er zijn 2 belangrijke velden, een veld "file" die dus in binaire vorm het document zelf is, en een veld "extension" die de extensie van het document bevat.

    Na wat onderzoek op google ben ik op het volgende stukje code gestuit :


    Code:
    var
      data_index : int64;
      size : int64;
      br : array[0..1023];
      remaining : array of byte;
    
    sql := 'SELECT file, extension FROM Data WHERE documentsid = ' + docid;
    command := SqlCommand.Create(sql, conn);
    
    dr := command.ExecuteReader(CommandBehavior.SequentialAccess);
    
    dr.Read;
    
    Response.ContentType := 'application/octet-stream';
    data_index := 0;
    size := 0;
    
    size := dr.GetBytes(0,data_index,br,0,1024);
    
    while (size = 1024) do begin
        Response.BinaryWrite(br);
        data_index := data_index + 1024;
        size := dr.GetBytes(0,data_index,br,0,1024);
    end;
    
    SetLength(remaining, size);
    Array.Copy(buffer, 0, remaining, 0, size);
    Response.BinaryWrite(remaining);
    een eerste vraag : is dit de correcte manier om dit klusje klaar te spelen of heeft er iemand nog alternatieven en/of tips?
    Ten tweede de method "array.copy" lukt niet... Heb ik iets vergeten ofzo?

    thx

  2. #2
    wat is de foutmelding die Array.Copy meegeeft :?

  3. #3
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Waarschijnlijk iets als : Statement expected but 'ARRAY' found.
    Als het zo is lost
    Code:
      System.Array.Copy(buffer, 0, remaining, 0, size);
    dat dan wel op.
    All methodologies are based on fear. -- Kent Beck.

  4. #4
    ja idd dirk dat was de oplossing wat betreft de method array.copy, thx

    maar ik ben er nog niet helemaal.
    Jpg's opent hij zonder problemen maar txt's of word documenten lukken minder goed.

    ik krijg het volgende te zien :







  5. #5
    Het werkt nu wel omdat IE zich geen snars aantrekt van:

    Code:
    Response.ContentType := 'application/octet-stream';
    Daarmee vertel je een browser dat iets downloadbaar is (althans zo is mijn ervaring). IE luistert niet, zoekt zelf uit waar t bestand op lijkt en doet er dan wat mee. Voor jpg hoor je eigenlijk "image/jpeg" te gebruiken, en voor documenten heb ik geen flauw idee. Google eens op "MIME types". Je vindt vast wel iets.

    Edit: "text/plain" is volgens mij voor gewone ASCII tekstbestandjes nu ik er over nadenk.
    Nieuw, speciaal voor Borland, de perfecte programmeur.

    Alleen dat ben ik niet

  6. #6
    probleem ondertussen opgelost

    voor de geïnteresseerden, de code :

    Code:
    var
      sql : string;
      docid : string;
      remaining : array of byte;
      data_index : Int64;
      bytesize : int64;
      imageData : array of byte;
      bytesread : int64;
      curpos : integer;
      chunksize : integer;
    
    begin
    
      sql := 'SELECT publicfile, publicextension FROM Data WHERE documentsid = ' + docid;
      command := SqlCommand.Create(sql, conn);
    
      dr := command.ExecuteReader(CommandBehavior.SequentialAccess);
    
      dr.Read;
    
      bytesize := dr.GetBytes(0, 0, nil, 0, 0);
      SetLength(imageData,bytesize);
      bytesread := 0;
      curpos := 0;
      chunkSize := 256;
    
      while (bytesread < bytesize) do begin
        bytesread := bytesread + dr.GetBytes(0, curpos, imageData, curpos, chunkSize);
        curpos := curpos + chunkSize;
      end;
    
      Response.Buffer := true;
      Response.Clear();
      Response.ContentType := 'application/octet-stream';
    
      Response.AddHeader('Content-Disposition', 'filename=doc' + docid + '.' + dr.Item['publicextension'].toString);
    
      Response.BinaryWrite(imageData);
      Response.Flush();

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •