【问题标题】:IsImageFile not working on cf9 like it did on cf8IsImageFile 不像在 cf8 上那样在 cf9 上工作
【发布时间】:2012-09-19 04:35:07
【问题描述】:

我公司数据库中的许多图像都有非常规名称,例如“st. john's.jpg”。在 cf8 中,我在 IsImageFile 中使用 URLEncodedFormat(myimage) 来检查此类图像(请参阅下面的代码)。在我搬到 cf9 之前,它工作得很好。似乎 cf9 无法识别 IsImageFile 中的 URLEncodedFormat 文件。请告知我如何使用常规和非常规名称制作 cf9 检查图像。

<cfif IsImageFile("http://www.mywebsite.com/images/#URLEncodedFormat(myimage)#")>
  <cfset imageURL = "/images/#URLEncodedFormat(myimage)#">
<cfelse> 
  <cfset imageURL = "/images/noimage.jpg">
</cfif>

【问题讨论】:

  • 假设您在两个版本上检查完全相同的 myimage 值,这听起来像是一个错误 - 您是否在 Adobe bug tracker 上提出了它?
  • 确切的错误是什么。也许它不是文件名。 stackoverflow.com/questions/11434403/…
  • 我在 Adob​​e 错误跟踪器中提出了问题。希望有人会提供帮助。我希望我能输出错误。似乎cfif有条件只返回false并将imageURL设置为“/images/noimage.jpg”
  • 我知道这实际上并不能解决您遇到的确切问题,但您可以切换到使用 cfhttp 来检查图像文件。您将发出cfhttp 请求,然后检查图像的状态和字节以确保它是图像文件。您可以使用来自stackoverflow.com/questions/1536815/… 的代码作为脚本的开始。

标签: coldfusion coldfusion-9 coldfusion-8 url-encoding


【解决方案1】:

您编写 if 语句的方式使我相信您将文件扩展名包含在“myimage”变量中。如果是这种情况,那么它将是“。” (句点)转换为“%2E”。

如果这是正确的,我会建议以下解决方法:

<cfscript>
  basePath  = "http://www.mywebsite.com";
  image     = "freds's image.jpg";
  name      = URLEncodedFormat(listFirst(image, "."));
  extension = listLast(image, ".");
  imageUrl  = "/images/#name#.#extension#";

  if (! isImageFile(basePath & imageUrl)) {
    imageUrl = "/images/noimage.jpg";
  }

</cfscript>

【讨论】:

    猜你喜欢
    • 2015-04-20
    • 2015-02-07
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多