我注意到,当使用标签创建目录然后使用上传/删除文件时,它需要一个来自托管网站的驱动器根目录的完整路径.如果可能的话,我宁愿使用与站点相关的位置.
这是我想做的一个例子:
<cfdirectory action="create" directory="users/files/myfiles">
Run Code Online (Sandbox Code Playgroud)
但这最终会C:\users\files\myfiles在硬盘中创建一个新的文件夹结构.为了让它在我的网站中创建目录,我必须写这个:
<cfdirectory action="create" directory="/inetpub/wwwroot/mysite/users/files/myfiles">
Run Code Online (Sandbox Code Playgroud)
我不喜欢必须放置完全合格的路径.它对我的需求不是很灵活.
它与删除文件的问题相同.我必须从硬盘驱动器上的位置开始放入文件路径,而不是在网站文件夹中的相对位置.这是正常的行为吗?
使用:ColdFusion 10、JQuery 1.9、IIS
我制作了一个 CFC(允许远程访问)来处理将评论插入到数据库中,无论它们是新评论还是对现有评论的回复。
我有一个表格,当你想发表评论时,它会提交给这个 CFC。
目前,我正在将(作为隐藏字段)表单变量传递给 CFC,以告诉它有关要插入的评论的各种信息:例如,User评论是针对哪个(RecipientID)以及CommentID它所引用的(如果是回复) )。这些值变化很大,因为有时用户会回复另一个用户的评论。
我不想在我的表单中发送隐藏的变量,因为它很容易被恶意的人修改。如何使用表单变量(例如评论正文)发送主表单信息,但仅使用 ColdFusion 传递敏感变量,使其无法被黑客操纵?
我可以做的一件事是提交回页面本身,然后使用它<cfinvoke>来调用 CFC 并传入参数。我会在调用中而不是在表单中设置参数。这是正确的方法吗?
我的网站使用URL Rewrite来制作SEO友好的URL.这使得自我发布表单回到同一页面有点棘手.
但是在ColdFusion中,我为表单的action属性执行此操作:
<form name="formSortBy" method="post" enctype="multipart/form-data" action="#StructFind(GetHttpRequestData().headers, 'X-Original-URL')#">
</form>
Run Code Online (Sandbox Code Playgroud)
这里的重要部分是#StructFind(GetHttpRequestData().headers, 'X-Original-URL')#获取页面的URL.
但是这个X-Original-URL键在某些页面上不存在,所以我从ColdFusion中得到一个错误:
Cannot find X-Original-URL key in structure.
The specified key, X-Original-URL, does not exist in the structure.
Run Code Online (Sandbox Code Playgroud)
当我点击进入我所在部分的主页时就会发生这种情况.X-Original-URL如果我去,http://www.sitename.com/products/gaming那就存在但是如果我去的话它将不存在http://www.sitename.com/products
反正有没有解决这个问题或让它像我需要的那样工作?
我有一个字符串,我存储在一个名为的变量中OriginalURL.它基本上是这样的:
<cfset OriginalURL = StructFind(GetHttpRequestData().headers, 'X-Original-URL')/>
Run Code Online (Sandbox Code Playgroud)
它所做的就是检查浏览器中的URL是什么,并将其存储为值.典型的价值就像是website.com/make/volvo/model/xc90?Page=2
我想要做的是从字符串的左边开始提取所有内容,直到它到达第一个?问号.所以它会提取这一部分website.com/make/volvo/model/xc90
我不确定如何Left()使用Regex 进行声明,以便它只匹配第一个问号.
我在一个format.cfc组件中创建了一个函数,该函数返回一个没有任何HTML代码的字符串:
<cffunction name="RemoveHTML" access="public" returntype="string" output="false" hint="Returns a string without any html">
<cfargument name="UserString" required="yes">
<cfset var result = "#REReplaceNoCase(Canonicalize(ARGUMENTS.UserString,false,true),'<[^>]*(?:>|$)', '', 'ALL')#">
<cfreturn result>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
我现在想要在每个空格处拆分字符串并将其转换为列表.所以我尝试使用ValueList()和ListToArray()但他们不喜欢从函数返回的值.
使用ValueList()我得到一个错误说:
函数ValueList不支持复杂构造
或者在使用ListToArray时出现此错误:
复杂对象类型无法转换为简单值
我基本上只是这样做:
<!--- ValueList() --->
<title>#ValueList(Application.Format.RemoveHTML(UserString = rsProduct.Title), ' ')#</title>
<!--- ListToArray() --->
<title>#ListToArray(Application.Format.RemoveHTML(UserString = rsProduct.Title), ' ')#</title>
Run Code Online (Sandbox Code Playgroud)
如果我删除了ListToArray()或ValueList()函数,那么我会得到我所期望的 - 一个没有HTML的产品标题字符串.
那么为什么函数不返回一个字符串,即使它看起来像一个?还是我错过了一些完全明显的东西?
我编写了简单的重写规则,重写.cfm扩展链接(使用出站规则),并使用等效的入站规则解析为完整的.cfm路径.例:
此出站链接:
http://mysite/section/page
解决了这个完整的路径:
http://mysite/section/page.cfm
当我访问没有文件扩展名的链接时,在任何浏览器中,页面都显示在屏幕上,但浏览器似乎仍在等待页面完成加载(在浏览器选项卡中获取旋转的圆圈,而Firefox则说"转移"来自mywebsite的数据...")
在"等待"加载页面大约5分钟后,浏览器将停止尝试加载并显示"无法显示页面"错误.我使用Firebug的NET面板来查看最新情况,基本上页面永远不会完成加载(文件大小保持0kb直到浏览器崩溃).
如果我转到一个完全限定的路径页面,http://mysite/section/page.cfm那么页面会在大约20ms内完全加载,Firebug会给我页面的大小.
任何人都可以建议发生什么事情以及如何解决它?
这是一个逻辑/最佳实践问题,而不是纯编程,所以如果它违反规则就道歉.
我正在使用JQuery的AJAX功能提交我的一些表单:
$.ajax({
type: "POST",
url: form-actions.cfc?method=NewSubmission,
data: $('#form1').serialize(),
success: function (result) {
// alert user of success
}
error: function (result) {
// alert user of success
}
});
Run Code Online (Sandbox Code Playgroud)
表单被提交给ColdFusion组件,该组件获取已经序列化的表单的所有参数,并在插入SQL数据库之前将它们放入变量中.这是一个例子:
<cfcomponent>
<cffunction name="NewSubmission" access="remote" hint="Saves or Submits New Submission" returntype="JSON">
<cfargument name="CustomerID" type="numeric" />
<cfargument name="Name" type="any" />
<cfargument name="DOB" type="any" />
<cfquery>
...the cfarguments automatically map to the key:value pairs
submitted by JQuery and insert into SQL here...
</cfquery>
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
主要问题:我现在有一个可以包含0-infinity <input type="file" name="upload1" />元素的表单,因为它们是由用户点击"添加文件"按钮动态生成的.每次单击此按钮时,<li> …
如果您有一个向用户显示大量信息的页面(例如客户帐户详细信息),并且此信息需要根据查看页面的人(例如经理,销售人员)而有所不同,我想知道最佳/有效的方式写条件逻辑.
例如,我有一个div,列出了所有客户的个人信息:
<cfif #User.Type# EQ "Sales"> // sales guy view
<div id="peronsonalinfo">
<ul>
<li>Forename Surname</li>
<li>Address</li>
<li>Account Status</li>
<li>Account Manager</li>
..... etc etc
</ul>
</div>
(continues below)
Run Code Online (Sandbox Code Playgroud)
以上情况适用于销售人员,因为他不允许对帐户进行更改.但是经理被赋予了编辑权,所以他需要得到这个.
<cfelseif #User.Type# EQ "Manager">
<div id="peronsonalinfo"> // manager view
<form action="accountedit.cfc">
<ul>
<li> <input type="text" value="Forename Surname" /> </li>
<li> <textarea value="Addres"></textarea> </li>
<li> <input type="text" value="Account status" /> </li>
<li> <input type="text" value="Account manager" /> </li>
..... etc etc
</ul>
</form>
</div>
</cfif>
Run Code Online (Sandbox Code Playgroud)
请原谅减少的代码.可能会有帐户状态和客户经理字段的下拉选择元素.我想说的是,根据你的身份,有两个相同信息的HTML版本.
编写这种逻辑的最佳方法是什么?我这样做的方式似乎是重复代码所以我能想到的唯一其他选择是围绕每个元素进行声明,就像这样?
<form>
<ul>
<li>
<cfif #User.Type# EQ …Run Code Online (Sandbox Code Playgroud) 这是我的html标记(减少)
<li class="tab"><a href="#" name="content1">Tab 1</a></li>
<li class="tab"><a href="#" name="content2">Tab 1</a></li>
<li class="tab"><a href="#" name="content3">Tab 1</a></li>
Run Code Online (Sandbox Code Playgroud)
我想要做的就是在单击其父级时获取标记的name属性,如下所示:<a><li>
$('li.tab').bind('click', function (e) {
var contentRequested = $(this + " a").name; // <-- this is not working to get the Name attribute
alert(contentRequested)
e.preventDefault;
});
Run Code Online (Sandbox Code Playgroud)
我如何使用$(this)然后<a>在其中找到标签,最后得到name属性值?
我创建了一个临时表来保存这样的值:
CREATE TABLE #TempCount (PendingOrders INT, OpenOrders INT, ClosedOrders INT);
Run Code Online (Sandbox Code Playgroud)
我想用SELECT语句中的值更新列,如下所示:
UPDATE #TempCount
SET PendingOrders =
(
SELECT
COUNT(OrderID) AS 'PendingOrders'
FROM
dbo.Products
WHERE
OrderStatus = 1
)
Run Code Online (Sandbox Code Playgroud)
但似乎没有任何东西得到更新.我希望PendingOrders显示一个数字,但它没有输入任何内容.列是空的.这同样适用于其他列 - 没有任何更新.
我该怎么解决这个问题?