0
나는 메일 첨부 파일을 얻으려면 imap_fetcheader을 사용하고 있습니다. 여기 코드는 -imap_fetchheader bytes 대 실제 파일 크기
은if (isset($content->ifdparameters) && $content->ifdparameters == 1 && isset($content->dparameters) && is_array($content->dparameters)) {
foreach ($content->dparameters as $object) {
if (isset($object->attribute) && preg_match('~filename~i', $object->attribute)) {
$attachment = new EmailAttachment();
$attachment->attachment_name = $object->value;
$attachment->attachment_size = $this->format_bytes($content->bytes);
$attachment->attachment_part_id = empty($actualpart) ? 1 : $actualpart;
$attachment->attachment_encoding = $content->encoding;
$results[] = $attachment;
}
}
}
format_bytes
기능은 여기에있다 -
private function format_bytes($bytes, $precision = 2) {
$units = array('B', 'KB', 'MB', 'GB', 'TB');
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0)/log(1024));
$pow = min($pow, count($units) - 1);
$bytes /= pow(1024, $pow);
return round($bytes, $precision) . ' ' . $units[$pow];
}
사용자가 첨부 파일을 클릭
, 나는 메일 서버에서 첨부 파일 콘텐츠를 잡고 다시 내용을 에코. 이 알려진 문제인가 ...$content->bytes
속성에 의해보고
바이트는 고객의 컴퓨터에 다운로드됩니다 그 다음에 무슨 실질적으로 다른 -
문제가 있다는 것입니다?
메일 서버는 CentOS 운영 체제에서 호스팅되는 POSTFIX입니다.
그래서 실제로 첨부 파일을 다운로드하지 않고 사용자에게 크기를 보여줄 때 33 %까지 줄여서 사용자에게 보여 주거나 너무 좋지 않을까요? –
대부분의 경우 합리적이지만 그 크기는 실제로 데이터 사용을 반영합니다. 대신 따옴표 붙이기 - 인쇄 가능한 인코딩 된 또는 전혀 인코딩되지 않은 경우가 있습니다 (일반 ascii.txt 문서). 조정하기 전에 인코딩을 찾아야합니다. base64라면 합리적인 가정입니다. – Max
PHP 수학도 마찬가지입니다.) 33 %가 아니라 25 % 줄여야합니다. 3에 33 %를 추가하면 4가됩니다. 이제 25 % 줄이면 3이 다시 생깁니다. – arnt