gpt4 book ai didi

mysql - Coldfusion 输出变量作为数据库中的图像

转载 作者:行者123 更新时间:2023-11-29 21:14:37 24 4
gpt4 key购买 nike

此功能将照片上传到我们网络的 map 中。之后它设置照片的路径并将源放入 imagepath 中。

    <cffunction name="uploadphoto" access="public" output="false" returntype="any">

<cfif isDefined("myForm.Submit")>
<returnvariable="imagePath">
</cfif>

<cfparam name="form.fileUpload" default="">

<cfif len(trim(form.fileUpload))>
<cfset LOCAL.imagePath = 'img/profiles/' />
<cfset strPath = ExpandPath( "./" ) & LOCAL.imagePath />

<cffile action="upload"
fileField="fileUpload"
destination="#strPath#"
nameconflict="overwrite">

<p>Thankyou, your file has been uploaded.</p>
</cfif>
<cfset form.filename = CFFILE.serverfile>


<cfreturn LOCAL.imagePath & form.filename/>

</cffunction>

This function update's the database and puts the img source path (imagePath) in the database.



<cffunction name="savephoto" access="public" output="false" returntype="any">
<cfargument name="dbname" type="any" required="no" default="#SERVER.cfc.core.getDBName()#" />
<cfargument name="myForm" type="Struct" required="yes">
<cfargument name="imagePath" type="any" required="yes">

<cfquery name="upload" datasource="#SERVER.cfc.core.getDSN()#">

UPDATE logboek.tbl_users SET photo=<cfqueryparam cfsqltype="cf_sql_varchar" value="#ARGUMENTS.imagePath#"/>
WHERE Users_id=<cfqueryparam value="#SESSION.Login_logboek.User_id#" cfsqltype="cf_sql_integer">
</cfquery>

</cffunction>

<cffunction name="checkavatar" access="public" output="false" returntype="any">
<cfargument name="dbname" type="any" required="no" default="#SERVER.cfc.core.getDBName()#" />

<cfquery name="checkavatar" datasource="#SERVER.cfc.core.getDSN()#">

This function checks if the right user is logged in to see the photo.

SELECT photo FROM logboek.tbl_users WHERE Users_id=<cfqueryparam value="#SESSION.Login_logboek.User_id#" cfsqltype="cf_sql_integer">
</cfquery>

<cfif checkavatar.RecordCount eq 1>
<cfreturn checkavatar.photo />
</cfif>


</cffunction>

我的问题在于我想使用图像源从数据库中的路径在屏幕上输出图像VARIABLES.checkavatar需要从数据库返回“照片”,如下所示:

<cfoutput>
#VARIABLES.checkavatar#
</cfoutput>

最佳答案

这里有几个地方出了问题。

首先,也是最重要的,在函数 checkavatar 内,您正在重新分配变量 checkavatar到一个查询结果。实际上,这会在第一次调用函数时破坏该函数。由于 CF 奇怪的作用域规则,您需要首先包含类似 <cfset var checkavatar = -1> 的行。在执行查询之前的函数中。我进一步建议不要将变量命名为与其所在函数相同的名称。

您对该函数的调用最终应该类似于

<img src="#checkavatar()#"/>

因为该函数返回路径。在区分本地文件路径和可通过网络访问的文件路径之间的差异时,您可能会遇到其他问题,但这很难远程调试。

接下来,去掉 <cfif checkavatar.RecordCount eq 1>检查或修改它以处理这种情况。如果你只是<cfreturn checkavatar.photo />如果什么也没找到,你得到的最糟糕的结果就是一个空字符串。目前,您将不会返回任何内容,这将使调用它的页面崩溃。因此,要么显式抛出,要么返回默认头像图像。

最后,仅使用传递到函数中的变量作为参数(而不是像现在那样通过 session 传递变量)。这是更好的设计,并且以后更容易重用。

关于mysql - Coldfusion 输出变量作为数据库中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36056097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com