PHP 到 Coldfusion zip/pkpass 输出流
PHP to Coldfusion zip/pkpass output stream
这个项目是我的苹果钱包项目,但是在 PHP 代码中,我面临挑战,我的 PHP 问题没有太多帮助,目前还没有回复,无论如何,现在我决定转换成冷聚变。
我能够在 BLOB 中以二进制形式保存 ZIP/PKPASS 文件。当我发送 PHP API GET 请求获取卡(二进制 zip/pkpass)时,它返回给我二进制流,请参见下面的附加屏幕。
当我向 coldfusion 发送请求时,我希望在 coldfusion 中实现相同的结果 API 代码也附在下面。
邮递员:
火狐:
我正在尝试在 coldfusion(lucee) 中转换 PHP 代码。数据库中的二进制代码是 zip 文件,但扩展名为“.pkpass”,数据库字段名称为 "data".
当我输入 运行 冷聚变代码时,它给出了错误 "Corrupted Content Error"。
PHP代码:
$myPass = $result->fetch();
$data = $myPass['data']; //zip/pkpass file Binary code from DB
$nameFile = 'passbook_'.time().'.pkpass';
file_put_contents($nameFile, $data);
$stream = function () use ($nameFile) {
readfile($nameFile);
};
return $app->stream($stream, 200, array(
'Pragma' => 'no-cache',
'Cache-Control' => 'private,false',
'Content-Transfer-Encoding' => 'binary',
'Content-Disposition' => 'inline; filename="'.basename($nameFile).'"',
'Content-Type' => 'application/vnd.apple.pkpass',
'Content-length' => filesize($nameFile),
'Content-Disposition' => 'attachment; filename="'.$nameFile.'"',
'Last-Modified' => gmdate('D, d M Y H:i:s T')
));
Coldfusion 代码:不工作需要帮助
<cfset filename = getPass.serial_number&'_'&createUUID()&'.pkpass'>
<cfheader name="Pragma" value="no-cache">
<cfheader name="Cache-Control" value="private,false">
<cfheader name="Content-Transfer-Encoding" value="binary">
<cfheader name="Content-Disposition" value="inline; filename=#filename#">
<cfheader name="Content-Type" value="'application/vnd.apple.pkpass">
<cfheader name="Content-Disposition" value="attachment; filename=#filename#">
<cfheader name="Content-Disposition" value="#DateFormat(getPass.updated_at, "yyyy-mm-dd")#' '#TimeFormat(getPass.updated_at, 'hh:mm:ss')#">
<cfcontent type="application/x-zip-compressed" variable="#BinaryDecode(getPass.data, 'Base64')#"> <!--- Binary Data from db 'getPass.data' --->
主要问题似乎是您将最后修改的值放在 "Content-Disposition" header 中。尝试修复它并清理其他 headers,如下所示:
<cfscript>
filename = "#getPass.serial_number#_#CreateUUID()#.pkpass";
cfheader( name="Pragma", value="no-cache" );
cfheader( name="Cache-Control", value="private,false" );
cfheader( name="Last-Modified", value="#DateFormat( getPass.updated_at, 'yyyy-mm-dd' )# #TimeFormat( getPass.updated_at, 'hh:mm:ss' )#" );
cfheader( name="Content-Transfer-Encoding", value="binary" );
cfheader( name="Content-Disposition", value="attachment; filename=#filename#" );
cfcontent( variable="#getPass.data#", type="application/vnd.apple.pkpass" );
</cfscript>
这个项目是我的苹果钱包项目,但是在 PHP 代码中,我面临挑战,我的 PHP 问题没有太多帮助,目前还没有回复,无论如何,现在我决定转换成冷聚变。
我能够在 BLOB 中以二进制形式保存 ZIP/PKPASS 文件。当我发送 PHP API GET 请求获取卡(二进制 zip/pkpass)时,它返回给我二进制流,请参见下面的附加屏幕。
当我向 coldfusion 发送请求时,我希望在 coldfusion 中实现相同的结果 API 代码也附在下面。
邮递员:
火狐:
我正在尝试在 coldfusion(lucee) 中转换 PHP 代码。数据库中的二进制代码是 zip 文件,但扩展名为“.pkpass”,数据库字段名称为 "data".
当我输入 运行 冷聚变代码时,它给出了错误 "Corrupted Content Error"。
PHP代码:
$myPass = $result->fetch();
$data = $myPass['data']; //zip/pkpass file Binary code from DB
$nameFile = 'passbook_'.time().'.pkpass';
file_put_contents($nameFile, $data);
$stream = function () use ($nameFile) {
readfile($nameFile);
};
return $app->stream($stream, 200, array(
'Pragma' => 'no-cache',
'Cache-Control' => 'private,false',
'Content-Transfer-Encoding' => 'binary',
'Content-Disposition' => 'inline; filename="'.basename($nameFile).'"',
'Content-Type' => 'application/vnd.apple.pkpass',
'Content-length' => filesize($nameFile),
'Content-Disposition' => 'attachment; filename="'.$nameFile.'"',
'Last-Modified' => gmdate('D, d M Y H:i:s T')
));
Coldfusion 代码:不工作需要帮助
<cfset filename = getPass.serial_number&'_'&createUUID()&'.pkpass'>
<cfheader name="Pragma" value="no-cache">
<cfheader name="Cache-Control" value="private,false">
<cfheader name="Content-Transfer-Encoding" value="binary">
<cfheader name="Content-Disposition" value="inline; filename=#filename#">
<cfheader name="Content-Type" value="'application/vnd.apple.pkpass">
<cfheader name="Content-Disposition" value="attachment; filename=#filename#">
<cfheader name="Content-Disposition" value="#DateFormat(getPass.updated_at, "yyyy-mm-dd")#' '#TimeFormat(getPass.updated_at, 'hh:mm:ss')#">
<cfcontent type="application/x-zip-compressed" variable="#BinaryDecode(getPass.data, 'Base64')#"> <!--- Binary Data from db 'getPass.data' --->
主要问题似乎是您将最后修改的值放在 "Content-Disposition" header 中。尝试修复它并清理其他 headers,如下所示:
<cfscript>
filename = "#getPass.serial_number#_#CreateUUID()#.pkpass";
cfheader( name="Pragma", value="no-cache" );
cfheader( name="Cache-Control", value="private,false" );
cfheader( name="Last-Modified", value="#DateFormat( getPass.updated_at, 'yyyy-mm-dd' )# #TimeFormat( getPass.updated_at, 'hh:mm:ss' )#" );
cfheader( name="Content-Transfer-Encoding", value="binary" );
cfheader( name="Content-Disposition", value="attachment; filename=#filename#" );
cfcontent( variable="#getPass.data#", type="application/vnd.apple.pkpass" );
</cfscript>