2015-10-13 3 views
2

Insérer pour MS-SQL 2008 Databasecoldfusion Comment enregistrer le fichier pdf dans la base de données quérir dans le navigateur

<cffile action="READBINARY" file="#form.FileContents#" variable="binPDF"> 
<cfquery name="Uploaded" datasource="#cfbasedatasource#"> 
INSERT INTO UploadedFiles 
    (
    AccountId, 
    Filecontent 
    ) 
VALUES 
    (
    '#UrlAccountId#', 
    <cfqueryparam value='#binPDF#' cfsqltype='cf_sql_blob'> 
    ) 
</cfquery> 

==================== ===== C'est Afficher la base de données au navigateur:

<cfset binaryData = #cfGetfilecontentquery.Filecontent[1]#> 
<cfheader name="Content-Disposition" value="inline; filename=testDocument.pdf"> 
<cfcontent variable="#binarydata#" type="application/pdf" reset="yes" /> 

Mais je ne peux voir dans le navigateur « Échec de chargement du document PDF »

+0

Quels sont les dbms? Quel est le type de données de la colonne Filecontent? Aussi, avez-vous vérifié que le fichier binaire complet est en cours d'enregistrement? Que se passe-t-il si vous écrivez le fichier binaire dans un fichier .pdf sur le disque et que vous l'ouvrez ici. – Leigh

+2

Votre code est correct en principe. Assurez-vous que les paramètres de l'administrateur CF permettent d'obtenir des données BLOB, sinon elles risquent d'être tronquées dans la base de données. –

+0

DB type MS-SQL 2008, type de champ est Varbinary (MAX) –

Répondre

4

Votre code est correct en principe. Assurez-vous que les paramètres de l'administrateur CF permettent d'obtenir des données BLOB, sinon elles risquent d'être tronquées dans la base de données. Il est assez courant de ne pas autoriser les données BLOB via le pilote (par défaut, il n'est PAS autorisé dans les paramètres DSN). Si vous l'activez, vous devriez être bon.


Je publie cette réponse afin que vous puissiez la signaler comme correcte en fonction des commentaires (selon la suggestion de Leigh). :)