목차
48MB 한도를 뚫기 : 큰 파일 슬라이스를 업로드하는 문제 해결
문제 분석
프론트 엔드 코드 최적화
백엔드 코드 개선
서버 구성 확인
요약 및 제안
백엔드 개발 PHP 튜토리얼 큰 파일 슬라이스 업로드가 48MB 이상으로 파일을 처리 할 수없는 문제를 해결하는 방법은 무엇입니까?

큰 파일 슬라이스 업로드가 48MB 이상으로 파일을 처리 할 수없는 문제를 해결하는 방법은 무엇입니까?

Apr 01, 2025 pm 01:39 PM
apache 500 오류

큰 파일 슬라이스 업로드가 48MB 이상으로 파일을 처리 할 수없는 문제를 해결하는 방법은 무엇입니까?

48MB 한도를 뚫기 : 큰 파일 슬라이스를 업로드하는 문제 해결

큰 파일 슬라이스를 업로드하는 과정에서 48MB 이상의 파일을 처리 할 수없는 상황이 발생합니까? 이 기사는 문제의 근본 원인을 분석하고 프론트 엔드, 백엔드 및 서버 구성에서 솔루션을 제공합니다.

문제 분석

큰 파일을 업로드 할 때 48 번째 슬라이스 (약 48MB) 후에 후속 요청은 500 개의 오류를 반환합니다. 슬라이스 크기가 조정 되더라도 40MB 한계를 초과 할 수 없습니다. 이는 문제가 서버 측 또는 백엔드 처리 로직에있을 수 있으며 심층적 인 문제 해결이 필요하다는 것을 나타냅니다.

프론트 엔드 코드 최적화

먼저 프론트 엔드 코드를 확인하십시오. 이전 코드는 슬라이스가 전송 될 때마다 동일한 FormData 객체를 사용할 수 있으므로 데이터 축적이 서버 제한을 ​​초과합니다.

솔루션 : 업로드 함수가 호출 될 때마다 FormData 객체를 재현하십시오 . 이러한 방식으로, 각 요청에는 데이터 축적을 피하며 현재 슬라이스 데이터 만 포함됩니다.

샘플 코드 스 니펫 (개선 된 sendfile 함수) :

 함수 sendfile (blob, file) {
    if (is_stop == 0) {
        var xhr = 새로운 xmlhttprequest ();
        var form_data = new FormData (); // FormData 객체를 재현합니다. VAR TATL_BLOB_NUM = MATH.CEIL (file.size / length);
        form_data.append ( 'file', blob);
        form_data.append ( 'blob_num', blob_num);
        form_data.append ( 'Total_blob_num', Total_blob_num);
        form_data.append ( 'file_name', file.name);

        xhr.open ( 'post', '/upload.php', false);
        xhr.onreadystatechange = function () {
            // ... (나머지 코드는 동일하게 유지) ...
        };
        xhr.send (form_data); // 요청 보내기}
}

백엔드 코드 개선

백엔드 코드는 메모리에서 직접 대형 파일을 처리하여 메모리 오버플로를 유발할 수 있습니다. 스트리밍 또는 임시 파일 병합을 사용하는 것이 좋습니다. 각 슬라이스를 임시 파일에 저장하고 최종 파일로 병합하십시오.

샘플 코드 스 니펫 (PHP, 개선 된 fileMerge 함수) :

 개인 기능 filemerge () {
    if ($ this-> blobnum == $ this-> totalbrobnum) {
        $ out = fopen ($ this-> filepath. '/'. $ this-> filename, 'wb'); // 'wb'모드를 사용하여 ($ i = 1; $ i  TotalBloBnum; $ i) {에 대한 이진 보안을 보장합니다.
            $ chunk = fopen ($ this-> filepath. '/'. $ this-> filename. '__'. $ i, 'rb'); // 'rb'모드를 사용하여 이진 데이터를 읽습니다. stream_copy_to_stream ($ chunk, $ out); // stream_copy_to_stream을 사용하여 fclose ($ chunk)를 효율적으로 복사합니다.
            @unlink ($ this-> filepath. '/'. $ this-> filename. '__'. $ i);
        }
        fclose ($ out);
    }
}

서버 구성 확인

프론트 엔드 및 백엔드 코드가 조정하더라도 문제가 여전히 존재할 수 있습니다. 다음 서버 구성을 확인해야합니다.

  1. Apache의 LimitRequestBody 설정 : 이 값이 큰 파일의 업로드를 허용 할 수있을 정도로 충분히 커지는 지 확인하십시오.
  2. php upload_max_filesizepost_max_size 설정 : 이 두 값은 업로드 된 파일의 크기보다 커야합니다.
  3. PHP의 memory_limit 설정 : 백엔드가 메모리에서 파일을 처리하면이 값을 증가시켜야합니다.

요약 및 제안

큰 파일 슬라이싱 업로드 문제를 해결하려면 프론트 엔드, 백엔드 및 서버 구성을 종합적으로 고려해야합니다. FormData 객체를 재현하고 스트리밍 또는 임시 파일 병합 및 서버 구성 조정을 사용하여 48MB 이상의 파일 업로드 문제를 효과적으로 해결할 수 있으며 효율적인 대형 파일 업로드 기능이 달성 될 수 있습니다.

위 내용은 큰 파일 슬라이스 업로드가 48MB 이상으로 파일을 처리 할 수없는 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Stock Market GPT

Stock Market GPT

더 현명한 결정을 위한 AI 기반 투자 연구

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

Apache에서 KeepAlive를 구성하는 방법은 무엇입니까? Apache에서 KeepAlive를 구성하는 방법은 무엇입니까? Aug 03, 2025 am 07:06 AM

KeepAliveon은 지속적인 연결을 가능하게합니다. 2. MAXKEEPALIVEREQUESTS100 연결 당 최대 요청 수를 설정합니다. 3. KEEPALIVETIMEOUT5 후속 요청을 기다리는 시간 초과를 설정하고 구성 후 Apache를 다시 시작하고 CURL 또는 브라우저 개발자 도구를 사용하여 KeepAlive가 서버 성능을 최적화하는 데 효과적인지 확인합니다.

Apache를 해결하는 방법은 libphp.so를 서버에로드 할 수 없습니다 Apache를 해결하는 방법은 libphp.so를 서버에로드 할 수 없습니다 Aug 08, 2025 am 06:07 AM

먼저, verifythelibphp.sofileExistsUsingFindorLocateCommands; ifmissing, reinstallphpwithPortviaPackagemanager.2.checkapacheConfigurationFilesForcorRectLoaddEctivePathandRemovedUplicates.3

Apache에 Let 's Encrypt SSL 인증서를 설치하는 방법은 무엇입니까? Apache에 Let 's Encrypt SSL 인증서를 설치하는 방법은 무엇입니까? Aug 04, 2025 am 09:47 AM

CertBot 및 Apache 플러그인을 설치하십시오. 2. 인증서를 얻고 도메인 이름을 구성하려면 certbot을 실행하십시오. 3. 선택적으로 HTTP에서 HTTP로 자동 리디렉션을 구성합니다. 4. 자동 갱신을 설정하고 건식 런 테스트를 통과합니다. 5. 설치를 확인하고 Apache의 일반 재 장전 구성을 확인하십시오. 인증서를 성공적으로 배포하면 갱신이 자동으로 관리됩니다. 전체 프로세스가 완료되면 보안 HTTPS 액세스를 달성 할 수 있습니다.

Apache 구성 파일은 어디에 있습니까? Apache 구성 파일은 어디에 있습니까? Aug 08, 2025 am 01:20 AM

Ondebian/Ubuntu, themainapacheconfigurationfileis/etc/apache2/apache2.conf, withadditionalconfigurationsin/etc/apache2/sites-av Ailable/및/etc/apache2/conf-available/.2.onrhel/centos/fedora, extrafilesin/h와 함께/httpd/conf/httpd.conf

기본 아파치 포트는 무엇입니까? 기본 아파치 포트는 무엇입니까? Aug 14, 2025 pm 01:02 PM

thedefaultapacheportforhttpis80.1.port80isubsUrunenCryptedhtttttttttttttttttttttandestAndardStandardForwebsErwesScludingApache.2

Windows 파일 관리자에서 파일 형식을 변환하는 방법은 무엇입니까? 효율적인 작동 단계 Windows 파일 관리자에서 파일 형식을 변환하는 방법은 무엇입니까? 효율적인 작동 단계 Sep 05, 2025 pm 08:12 PM

Windows 파일 관리자는 파일 관리를 담당하고 파일 내용을 처리하지 않기 때문에 파일 형식을 배치로 직접 변환 할 수 없습니다. IrfanView 및 FFMPEG와 같은 타사 도구를 사용하여 효율적인 배치 변환을 달성하고 파일 관리자와 결합하여 파일을 필터링하고 도구를 가져 오며 그래픽 인터페이스 또는 명령 줄을 통해 변환을 완료해야합니다. 명령 줄 도구는 자동화, 고효율 및 정확한 제어의 장점을 가지고 있지만 학습 비용, 오류 처리 및 파일 백업에주의를 기울여야합니다.

Apache에서 IP 주소를 차단하는 방법은 무엇입니까? Apache에서 IP 주소를 차단하는 방법은 무엇입니까? Aug 26, 2025 am 08:00 AM

Toblockanipinapache2.4, usetherequiredirectivewithinablock, awalsrequireallgrantedrequirenotip192.168.1.100toblockasingleip, asubnetlike192.168.1, ormultiplespecificipsbyrepeatingtherequirenoTipline, 2. placetherthertual, orblacthethertipirt

Apache에서 간단한 웹 사이트를 주최하는 방법은 무엇입니까? Apache에서 간단한 웹 사이트를 주최하는 방법은 무엇입니까? Sep 05, 2025 am 05:15 AM

installApacheusingpackagemanagercommandsforyouros, startAndEnableTheService.2.PlaceYOURWEBSITEFILESINTEFAULTDIRECTORY/var/www/html/, setProperownershipandPermissionsBasedOnyOUrSystem (www-dataforubuntu, apacheforcentos)

See all articles