Ich bin ziemlich neu in ColdFusion. Ich habe den folgenden Code, der die Bilder auf der Seite anzeigt, die ich in einem Tutorial referenziere, das gut funktioniert.Bild von Website mit Coldfusion herunterladen
Wenn der Benutzer eines der Bilder auswählt, wird das Bild im Browser angezeigt. Allerdings möchte ich dem Benutzer erlauben, die Bilder herunterzuladen, anstatt sie im Browser anzuzeigen.
Ich kann nicht die HTML5 herunterladen zu erreichen, was ich tue, aufgrund der Tatsache, dass die Website, die ich arbeite auf XHTML 1.0 läuft.
Ich fand den folgenden Ansatz File Downloads with ColdFusion, aber ich verstehe nicht, wie man es anwendet. Wenn mich jemand in die richtige Richtung führen oder mir einen anderen Ansatz zeigen könnte, würde ich es begrüßen.
Vielen Dank im Voraus.
<cfset filters = "*.pdf|*.zip|*.doc*|*.docx*|.ppt*|*.pps*|*.pot*|*.dot*|*.xls*|*.xlsx*|*.swf|*.rtf|*.png|*.bmp|*.jpeg|*.gif">
<cfdirectory
directory="c:\Downloads\Logos"
name="myDirectory"
action = "list"
filter="#filters#"
sort="name ASC, size DESC"
>
<table width="80%" border="0" align="left">
<cfoutput query="myDirectory">
<cfset FileExt=ListLast(Name,".")>
<cfif FileExt eq 'pdf'>
<cfset imgicon = 'pdf-icon-24.png'>
<cfelseif FileExt eq 'xlsx' or FileExt eq 'xls'>
<cfset imgicon = 'Microsoft-Excel-icon-24.png'>
<cfelseif FileExt eq 'docx' or FileExt eq 'doc'>
<cfset imgicon = 'docx-icon-24.png'>
<cfelseif FileExt eq 'lnk'>
<cfset imgicon = 'url-icon-24.png'>
<cfelseif FileExt eq 'png'>
<cfset imgicon = 'png-icon.png'>
<cfelse>
<cfset imgicon = 'Documents-icon-24.png'>
</cfif>
<tr>
<td width="30"> </td>
<td class="e"><img src="images/#imgicon#" alt="#Name#" class="float-left"/ ></td>
<td class="e"> <a href="ForceDownload.cfm?filename=#EncodeForURL(Name)#">#Name#</a></td>
</tr>
</cfoutput>
</table>
</p>
<br /><br /><br /><br /><br /> <br /><br /><br /><br /><br /> <br /><br /><br /><br /><br /> <br /><br /><br /><br /><br /> <br /><br /><br /><br /><br /> <br /><br /><br /><br /><br /> <br /><br /><br /><br /><br /> <br /><br /><br /><br /><br />
<p class="post-footer align-left">
<span class="date">
<cfoutput>#dateformat(Now(),"mmm dd,yyyy")#</cfoutput>
</span>
</p>
<br />
<br />
</div>
aktualisieren habe ich ein anderes Skript und es ForceDownload.cfm genannt und hat die folgenden:
<cfset folder = "c:\path\Downloads\Logos\">
<cfif StructKeyExists(url,"filename") && fileExists(folder & filename)>
<cfset filename = href="ForceDownload.cfm?filename=#Name#">
<cfset fileInfo = GetFileInfo(folder & filename)>
<cfset mimeType = getPageContext().getServletContext().getMimeType(folder & filename)>
<cfheader name="Content-Disposition" value="attachment; filename=""#filename#""">
<cfheader name="Expires" value="#Now()#">
<cfheader name="Content-Length" value="#fileInfo.size#">
<cfcontent type="#mimeType#" file="#folder##filename#" deletefile="No">
</cfif>
ich einen Tag erhält folgende Fassung <a href="Logos\#Name#" >#Name#</a>
mit dem folgenden Befehl einen Tag <a href="ForceDownload.cfm">#Name#</a>
Wenn Ich habe das gemacht, es gab keine Fehler. Wenn ich jedoch auf eines der Bilder klicke, geht es auf eine leere Seite, auf der das Bild nicht angezeigt wird.
Ich bin nicht sicher, wie der Name der Dateien zu übergeben
Jede Hilfe würde geschätzt werden, um Dateinamen.
-Update zeigt:
ich den Hyperlink aktualisiert: <a href="ForceDownload.cfm:filename=#Name#">#Name#</a></td>
und ich habe die folgenden: *
<cfparam name="http://portal/regalnet_test/ForceDownload.cfm?filename=#Name#" default="">
<cfset folder = "\\oc2-web\wwwroot\RegalNet_Test\Downloads\MktgDownloads\Logos\">
<!--- If the path to the file is valid --->
<cfif fileExists(folder & filename)>
<cfset filename = name>
<cfset fileInfo = GetFileInfo(folder & filename)>
<cfset mimeType = getPageContext().getServletContext().getMimeType(folder & filename)>
<cfheader name="Content-Disposition" value="attachment; filename=""#filename#""">
<cfheader name="Expires" value="#Now()#">
<cfheader name="Content-Length" value="#fileInfo.size#">
<cfcontent type="#mimeType#" file="#folder##filename#" deletefile="No">
<!--- Otherwise, display debugging information (Dev only) --->
<cfelse>
<cfoutput>
Sorry, unable to find file: #folder##filename#<br>
Does the folder exist? #directoryExists(folder)#<br>
Does the File Exist? = #fileExists(folder & filename)#
</cfoutput>
</cfif>
Sie benötigen ein zusätzliches .cfm-Skript, um den Download zu verarbeiten. Dieses neue Skript würde den Code aus dem Blogeintrag enthalten (achten Sie darauf, den Ordnerpfad zu aktualisieren). Erstellen Sie dann einen Hyperlink, der auf das neue Skript verweist, und übergibt den Bilddateinamen als URL-Parameter namens "Dateiname". – Leigh
@Leigh Können Sie mir zeigen. Auch hier bin ich sehr neu. –
Probieren Sie es zuerst aus. 1. Kopieren Sie den genauen Code in eine neue .cfm-Datei. 2. Ändern Sie den Text "[PATH TO YOUR FILES FOR DOWNLOAD]" in einen echten Dateipfad wie "c: \ path \ yourimages \" 3. Testen Sie nun das Skript in Ihrem Browser, indem Sie den Dateinamen eines realen Bildes dorthin übergeben Verzeichnis als URL-Parameter namens 'Dateiname'. Zum Beispiel "http: //yoursite/yourNewPage.cfm? Filename = someImageFileThatExists.png". Was ist das Ergebnis? – Leigh