form vs href链接损坏

时间:2013-08-12 21:48:46

标签: php html magento download

所以我一直试图让上传/下载系统运行但仍然遇到问题,特别是下载的文件已损坏(.xls)。

这就是我目前的情况:

<form action="{{block type=" core/template" name="my-template"
template="php/download_file.php" }}" method="post">
<label for="date">Date:</label>
<input type="date" name="date" id="date"><br>
<input type="submit" name="submit" value="Download">
</form>
<a href="link/to/file">download file</a>

所以,这些都链接到同一个文件并下载正常。 如果我点击下载文件链接,文件打开就可以了。 如果我通过表单下载按钮,那么它将下载但是打开给我一个警告/错误:“'文件'的文件格式和扩展名不匹配”并且挂起迫使我强行关闭文件。 / p>

download_file.php:

<?php
if($_POST['submit']) {

$file = 'excel_file.xls';
// Magento file path
$path = Mage::getBaseUrl('media') . 'folder' . DS . $file;

header("Content-Type: application/vnd.ms-excel");
//header("Content-Type: application/octet-stream");
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename = 'filename'");
echo $path;
exit;
}
    ?>

这一切都在Magento Static Block中,如果与它有任何关系。 任何帮助表示赞赏。 感谢。

2 个答案:

答案 0 :(得分:0)

你试过这个:

header("Content-Type:   application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=abc.xls");  //File name extension was  wrong
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);

问候。

答案 1 :(得分:0)

尝试更改:

header("Content-Disposition: attachment; filename = 'filename'");

为:

header("Content-Disposition: attachment; filename=filename.xls");

或者如果您使用变量:

header("Content-Disposition: attachment; filename=$filename.xls");

基本上,以引号开头和结尾,不要在它们之间使用任何引号或撇号。