我创建了一个downloadt.php文件,可直接从电子邮件服务器下载电子邮件附件,而无需将其保存在我的Webspace中。 我单击提交按钮将数据发布到我的save_attachment.php文件中。
它很好用,但是如果我添加“ Content-Length”行,那么它就不会每次都起作用。因此,我发现,并非所有智能手机浏览器都能在此行中正常工作。因此,我检查是否有智能手机,如果没有,请添加内容长度。 因为我想知道桌面浏览器中的文件大小和下载过程。
现在可以使用。但是,如果我尝试下载更大的文件(超过1-2MB),则开始下载,但由于“未完成下载”而关闭。小文件效果很好(50公里)。
编辑:在chrome中工作。问题仅在IE中...
我试图更改Content-type标头(“ Pragma:public”); header(“ Expires:0”); header('HTTP / 1.1 206 Partial Content');
<?php
session_start();
If ((Isset($_POST['uid']) == false) or (Isset($_SESSION['user']) == false) or (Isset($_SESSION['pw']) == false)) {
echo ("Keine Zuordnung vorhanden");
return;
}
$get_username = $_SESSION['user'] ;
$get_pw = $_SESSION['pw'] ;
$get_server_in = $_SESSION['server_in'];
$get_uid = $_POST['uid'];
$get_partNum = $_POST['data-attachment_partNum'];
$get_encoding = $_POST['data-enc'];
$imap_open= imap_open($get_server_in, $get_username, $get_pw);
$msgno = imap_msgno($imap_open, $get_uid);
function downloadAttachment($imap, $uid, $partNum, $encoding) {
$partStruct = imap_bodystruct($imap, imap_msgno($imap, $uid), $partNum);
$filesize = $partStruct->bytes;
$filename = $partStruct->dparameters[0]->value;
$message = imap_fetchbody($imap, $uid, $partNum, FT_UID);
$path_info = pathinfo($filename);
switch ($encoding) {
case 0:
case 1:
$message = imap_8bit($message);
break;
case 2:
$message = imap_binary($message);
break;
case 3:
$message = imap_base64($message);
break;
case 4:
$message = quoted_printable_decode($message);
break;
}
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=" . $filename);
header("Content-Transfer-Encoding: binary");
header("Pragma: public");
header("Expires: 0");
header('HTTP/1.1 206 Partial Content');
if ($_SESSION['mobile'] != "true"){
header("Content-Length: ".$filesize);
header("Content-Range: 0-".($filesize-1)."/".$filesize);
}
echo $message;
//echo $filesize;
// echo ini_get ( 'memory_limit');
}
downloadAttachment($imap_open, $get_uid, $get_partNum, $get_encoding);
?>
谢谢您的帮助