swf文件存储在数据库中,需要使用flexpaper显示。
这是flexpaper显示文件的代码。
$('#documentViewer').FlexPaperViewer(
{ config : {
SWFFile : '<?php echo "present_retrieve.php?id=".$id.""; ?>',
Scale : 0.6,
ZoomTransition : 'easeOut',
ZoomTime : 0.5,
ZoomInterval : 0.2,
FitPageOnLoad : true,
FitWidthOnLoad : false,
FullScreenAsMaxWindow : false,
ProgressiveLoading : false,
MinZoomSize : 0.2,
MaxZoomSize : 5,
SearchMatchAll : false,
InitViewMode : 'Portrait',
RenderingOrder : 'flash',
StartAtPage : '',
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
WMode : 'window',
localeChain: 'en_US' }}
present_retrieve.php
<?php
// Connect to the database
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="is"; // Database name
$tbl_name="presentation"; // Table name
$conn = mysql_connect("$host", "$username", "$password");
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($db_name);
if (isset($_GET["id"]) && !empty($_GET["id"])) {
$id= $_GET['id'];
$query = "SELECT file_name, file_type, file_size, content FROM $tbl_name WHERE file_id = '$id'";
$result = mysql_query($query) or die(mysql_error());
$row1 = mysql_fetch_array($result);
$name=$row1['file_name'];
$type=$row1['file_type'];
$size = $row1['file_size'];
$content = $row1['content'];
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;
mysql_close($conn);
exit;
}
?>
但是,该文件未在flexpaper中显示。
请帮我弄明白。谢谢。
答案 0 :(得分:0)
可能是您的输出中有一个额外的空间,这会破坏swf文件。检查php脚本中的任何前导或尾随空格(在php脚本标记之外)。
您也不需要在回复中使用内容处置标头。我建议使用swf文件的以下标题:
标题(&#39;内容类型:application / x-shockwave-flash&#39;); 标题(&#39; Accept-Ranges:bytes&#39;); 标题(&#39;内容长度:&#39;。$ size);