바이너리 파일을 base64로 인코딩하여 PHP 페이지 (인라인 코드)에 넣으려고합니다. 요청 페이지에서 브라우저로 파일을 스트리밍하면 다운로드 대화 상자가 나타납니다.
어떤 아이디어바이너리 파일을 PHP 페이지로 인코딩
답변
매우 직설적입니다. readfile과 마찬가지로 http 헤더를 사용하여 강제로 다운로드 한 다음 인코딩 된 문자열을 에코합니다.
$decoded_data = base64_decode($encoded_data);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . strlen($decoded_data);
ob_clean();
flush();
echo $decoded_data;
exit;
나는 이것을 바로 downvote하지 않겠지 만, 만약 당신이 그것을 고치지 않는다면 ... 당신은 문자열을 두 번 해독했습니다. 한번은 데이터의 길이를 얻습니다. 한 번 출력 할 수 있습니다. 변수에'base64_decode()'의 결과를 저장하고 그 변수를'strlen()'과'echo'에 넘겨야합니다 - 만약 데이터가 100MB라면? – DaveRandom
좋은 지적. 전체 파일이 메모리에로드되기 때문에 여전히 큰 파일에는 권장하지 않지만 최소한이 방법은 한 번만 디코딩됩니다. – Juhani
개인적으로 * 권장하지는 않을 것입니다. 이럴 이유가 거의 없습니다. 나는 전체 응용 프로그램을 하나의 파일에 포함시키는 것이 좋다고 인정한다. (이 작업은 내가 생각할 수있는 유일한 합법적 인 이유이다.) 작은 미적인 이득과 큰 성능 비용으로 인해 실제로 실행 가능하지는 않다. 하지만 약간 답글을 쓰면 대답은 좋다 - 문자열이 스크립트에서 정적이고 파일 처리에 큰 오버 헤드가 있기 때문에 캐싱 헤더가 클라이언트 캐싱을 위해 더 잘 설정 될 것이며, 참고로 HTTP 헤더가 없다 'Content-Transfer-Encoding'으로 – DaveRandom
아마도이 예제는 당신에게 http://www.php.net/manual/en/function.base64-encode.php#105200
감사를 도울 수 있습니다!
- 1. PHP - 파일을 사용할 수없는 경우 페이지로 리디렉션
- 2. Trasferring 바이너리 파일 PHP
- 3. 오디오 인코딩 된 바이너리 데이터는 어떻게 해석합니까?
- 4. 어떻게 바이너리 파일을 병합합니까?
- 5. 바이너리 파일을 파싱하는 정규식?
- 6. 바이너리 파일을 diff하는 프로그램?
- 7. 바이너리 파일을 뒤로 읽으십시오.
- 8. 윈도우 아이폰 바이너리 파일을
- 9. 바이너리 인코딩 된 PDF 란 무엇입니까?
- 10. PHP MySQL 바이너리 선택
- 11. 인코딩 PHP 스크립트
- 12. apache2 및 magicial php 바이너리
- 13. PHP 인코딩 - UTF-8
- 14. PHP 인코딩 히브리어
- 15. 프롤로그 및 PHP 인코딩
- 16. PHP 문자열 인코딩
- 17. PHP 인코딩 문제 (utf8에서 iso로)
- 18. PHP 페이지로 이동하고 스크롤
- 19. PHP, 다른 페이지로 리디렉션
- 20. PHP - 다른 페이지로 리디렉션
- 21. 바이너리 파일을 사용하는 용도는 무엇입니까?
- 22. 자바 : 바이너리 파일을 쓰는 방법?
- 23. 바이너리 파일을 읽는 동안 seek()
- 24. 바이너리 파일을 Java로 디스크에 복사하십시오.
- 25. git untracked 바이너리 파일을 처리하십시오.
- 26. VBA - 15MB 바이너리 파일을 var
- 27. 바이너리 파일을 XP에서 Cygwin에서 실행
- 28. ELMAH 바이너리 파일을 어디에 둘까요?
- 29. 젠드 PHP + JQUERY 인코딩 문제
- 30. php utf-8 인코딩 문제
난 그냥 아이디어를 원하는 – MrBassam
글쎄 그것은 인쇄 base64_decode ('02FAF ....')은'이다, '그 파일이 PHP 인터프리터에 사용할 수있는 메모리보다 큰 경우 실행할 수 없습니다. – mario
마리오,이 usegul 답변을 코멘트로하지만 답변 자체를 게시하지 않습니다 :) – Gian