큰 파일 슬라이스 업로드가 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); } }
서버 구성 확인
프론트 엔드 및 백엔드 코드가 조정하더라도 문제가 여전히 존재할 수 있습니다. 다음 서버 구성을 확인해야합니다.
- Apache의
LimitRequestBody
설정 : 이 값이 큰 파일의 업로드를 허용 할 수있을 정도로 충분히 커지는 지 확인하십시오. - php
upload_max_filesize
및post_max_size
설정 : 이 두 값은 업로드 된 파일의 크기보다 커야합니다. - PHP의
memory_limit
설정 : 백엔드가 메모리에서 파일을 처리하면이 값을 증가시켜야합니다.
요약 및 제안
큰 파일 슬라이싱 업로드 문제를 해결하려면 프론트 엔드, 백엔드 및 서버 구성을 종합적으로 고려해야합니다. FormData 객체를 재현하고 스트리밍 또는 임시 파일 병합 및 서버 구성 조정을 사용하여 48MB 이상의 파일 업로드 문제를 효과적으로 해결할 수 있으며 효율적인 대형 파일 업로드 기능이 달성 될 수 있습니다.
위 내용은 큰 파일 슬라이스 업로드가 48MB 이상으로 파일을 처리 할 수없는 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

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

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

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

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

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

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

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

thedefaultapacheportforhttpis80.1.port80isubsUrunenCryptedhtttttttttttttttttttttandestAndardStandardForwebsErwesScludingApache.2

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

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

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