我對ColdFusion相當陌生。我有下面的代碼,它顯示在我可以正常工作的教程中引用的頁面上的圖像。從網站下載圖片使用Coldfusion
當用戶選擇任何圖像時,它將在瀏覽器中顯示圖像。但是,我想讓用戶下載圖像,而不是在瀏覽器中顯示它們。
我無法使用HTML5 下載來實現我正在做的事情,因爲我正在使用的網站在XHTML 1.0上運行。
我發現了以下方法File Downloads with ColdFusion但我不理解如何應用它。如果任何人都可以引導我走向正確的方向,或向我展示另一種方法,我將不勝感激。
謝謝您提前。
<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>
更新我創造了另一個腳本,並把它稱爲ForceDownload.cfm,也做了以下內容:
<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>
我更換了以下標籤<a href="Logos\#Name#" >#Name#</a>
具有以下標籤<a href="ForceDownload.cfm">#Name#</a>
當我這樣做,沒有錯誤。但是,當我點擊任何圖像時,它會進入不顯示圖像的空白頁面。
我不知道如何傳遞文件的名稱爲filename
任何幫助,將不勝感激。
更新的錯誤:
我更新的超級鏈接:<a href="ForceDownload.cfm:filename=#Name#">#Name#</a></td>
,我做了以下內容:*
<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>
您需要額外的.cfm腳本來處理下載。該新腳本將包含來自博客條目的代碼(請務必更新文件夾路徑)。然後創建一個指向新腳本的超鏈接,並將該圖像文件名稱作爲名爲「文件名」的URL參數傳遞。 – Leigh
@Leigh你能告訴我嗎?再一次,我對此很新穎。 –
先試一試:) 1.將該確切代碼複製到新的.cfm文件中。 2.將文本「[文件路徑下載]」更改爲真正的文件路徑,如「c:\ path \ yourimages \」3.現在,在瀏覽器中通過傳遞真實圖像的文件名來測試該腳本目錄作爲名爲'filename'的URL參數。例如'http://yoursite/yourNewPage.cfm?filename = someImageFileThatExists.png'。結果是什麼? – Leigh