私のサーバーからPHPを介してPDFをダウンロードしたいと考えています。これはPHP経由でもアップロードされています。それは私が個々のファイルでは、次のエラーメッセージが表示されますいくつかのファイルで動作しますが:PHPでダウンロード - > ERR_CONTENT_LENGTH_MISMATCH
ERR_CONTENT_LENGTH_MISMATCH
これは私のダウンロード機能である:
if($_GET['funktion'] == 'downloadverwaltung')
{
$filename = basename($dateiname);
$path = '/kunden/261105_71522/webseiten/admin/PDF/fern_downloads/'.$rowkurs['courseid'].'/'.$filename.''; // the file made available for download via this PHP file
if($_SESSION['xle'][$_GET['idsh']]['letype'] == 'fern' && $_GET['link'] == 'ja')
{
$path = 'http://ls.gdvz.de/'.$filename.'';
}
elseif($_SESSION['xle'][$_GET['idsh']]['letype'] == 'fern' && $_GET['link'] != 'ja')
{
$path = '/kunden/261105_71522/webseiten/dev.delst/admin/PDF/fern_downloads/'.$_GET['kursid'].'/'.$filename.'';
}
elseif($_SESSION['xle'][$_GET['idsh']]['letype'] == 'kurs' && $_GET['link'] == 'ja')
{
$path = 'http://ls.gdvz.de/'.$filename.'';
}
elseif($_SESSION['xle'][$_GET['idsh']]['letype'] == 'kurs' && $_GET['link'] != 'ja')
{
$path = '/kunden/261105_71522/webseiten/dev.delst/pdf/'.$_GET['kursid'].'/'.$filename.'';
}
$check = file_exists($path);
if($_GET['link'] == 'ja')
$check = fopen($path, "r");
//echo $path;
if ($check) {
$mm_type="application/octet-stream"; // modify accordingly to the file type of $path, but in most cases no need to do so
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($path)));
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header("Content-Transfer-Encoding: binary\n");
readfile($path); // outputs the content of the file
exit();
}
else
echo'Datei wurde nicht auf dem Server gefunden';
}
私はヘッダ( "のContent-Lengthを削除した場合: "。(文字列)(ファイルサイズ($パス)));ダウンロードが動作しますが、PDFファイルが破損して開けません。
私はまた、次のことを試してみました:
if($_GET['funktion'] == 'downloadverwaltung')
{
$filename = basename($dateiname);
$path = '/kunden/261105_71522/webseiten/admin/PDF/fern_downloads/'.$rowkurs['courseid'].'/'.$filename.''; // the file made available for download via this PHP file
if($_SESSION['xle'][$_GET['idsh']]['letype'] == 'fern' && $_GET['link'] == 'ja')
{
$path = 'http://ls.gdvz.de/'.$filename.'';
}
elseif($_SESSION['xle'][$_GET['idsh']]['letype'] == 'fern' && $_GET['link'] != 'ja')
{
$path = '/kunden/261105_71522/webseiten/dev.delst/admin/PDF/fern_downloads/'.$_GET['kursid'].'/'.$filename.'';
}
elseif($_SESSION['xle'][$_GET['idsh']]['letype'] == 'kurs' && $_GET['link'] == 'ja')
{
$path = 'http://ls.gdvz.de/'.$filename.'';
}
elseif($_SESSION['xle'][$_GET['idsh']]['letype'] == 'kurs' && $_GET['link'] != 'ja')
{
$path = '/kunden/261105_71522/webseiten/dev.delst/pdf/'.$_GET['kursid'].'/'.$filename.'';
}
//echo $path;
if (file_exists($path)) {
// $mm_type="application/octet-stream"; // modify accordingly to the file type of $path, but in most cases no need to do so
// header("Pragma: public");
// header("Expires: 0");
// header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
// header("Cache-Control: public");
// header("Content-Description: File Transfer");
// header("Content-Type: " . $mm_type);
// header("Content-Length: " .(string)(filesize($path)));
// header('Content-Disposition: attachment; filename="'.basename($path).'"');
// header("Content-Transfer-Encoding: binary\n");
set_time_limit(0);
output_file($path, basename($path), 'application/octet-stream');
exit();
}
else
echo'Datei wurde nicht auf dem Server gefunden';
}
パスが正しいことと、ファイルがサーバー上に配置されます。アップロードがうまくいきます。
私は間違っていますか?
とメモリの制限を高めるために試みることができる...動作しません:( – Codehan25
それは動作しませんが...なぜ? – Ryosaku