{"id":4985,"date":"2022-06-17T05:34:52","date_gmt":"2022-06-17T05:34:52","guid":{"rendered":"https:\/\/www.codexworld.com\/?p=4985"},"modified":"2022-06-17T05:36:51","modified_gmt":"2022-06-17T05:36:51","slug":"chunk-file-upload-with-javascript-using-php","status":"publish","type":"post","link":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/","title":{"rendered":"Chunk File Upload with JavaScript using PHP"},"content":{"rendered":"<p>There are a few ways to deal with large file uploads in PHP. The easiest way is to increase the maximum upload size limit in the PHP configuration file (php.ini) on the server. If you don&#8217;t want to modify the server setting in PHP, the <b>Chunk Upload<\/b> method is one of the best alternatives for large file upload with PHP. In chunk upload, the large file is split into small parts and uploaded in chunks. You can upload large files above 500MB or GB to the server using PHP. This tutorial will show you how to handle large file upload with the chunking feature in PHP.<\/p>\n<p>Normally, the entire file is posted to the server-side for upload. But, if the file is huge (about several gigabytes) in size, the standard upload may fail due to settings in the server&#8217;s constraints on uploaded file size. To overcome this issue, we can integrate the chunk upload functionality. The <b>chunk file upload<\/b> method slices the file into chunks and sends them one by one to the server in PHP.<\/p>\n<p>We will use the Plupload library to split file into chunks on the client-side and post them to the server-side using JavaScript. Plupload is a JavaScript library that handles the chunk upload process on the client-side.<\/p>\n<h2>Uploader HTML Elements<\/h2>\n<p>Define HTML elements to select the file, upload button, and file queue.<\/p>\n<pre style=\"color: rgb(95, 94, 78);\"><span class=\"hljs-comment\" style=\"color: rgb(108, 107, 90);\">&lt;!-- File browse input field --&gt;<\/span>\r\n<span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"form-group\"<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">label<\/span>&gt;<\/span><span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">b<\/span>&gt;<\/span>Select File:<span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;\/<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">b<\/span>&gt;<\/span><span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;\/<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">label<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">input<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"file\"<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"form-control\"<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"fileInput\"<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;\/<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">div<\/span>&gt;<\/span>\r\n\r\n<span class=\"hljs-comment\" style=\"color: rgb(108, 107, 90);\">&lt;!-- List the selected files --&gt;<\/span>\r\n<span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">div<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"fileList\"<\/span>&gt;<\/span><span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;\/<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">div<\/span>&gt;<\/span>\r\n\r\n<span class=\"hljs-comment\" style=\"color: rgb(108, 107, 90);\">&lt;!-- Upload button --&gt;<\/span>\r\n<span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"form-group\"<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">a<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"uploadBtn\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"javascript:;\"<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"btn btn-success\"<\/span>&gt;<\/span>Upload<span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;\/<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">a<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;\/<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">div<\/span>&gt;<\/span><\/pre>\n<p>Additionally, we have added a progress bar that indicates the upload progress in a percentage format.<\/p>\n<pre style=\"color: rgb(95, 94, 78);\"><span class=\"hljs-comment\" style=\"color: rgb(108, 107, 90);\">&lt;!-- Progress bar --&gt;<\/span>\r\n<span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"progress\"<\/span>&gt;<\/span><span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;\/<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">div<\/span>&gt;<\/span><\/pre>\n<h2>Initialize Plupload Uploader with JavaScript<\/h2>\n<p>First, include the Plupload JS library.<\/p>\n<pre style=\"color: rgb(95, 94, 78);\"><span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">script<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\" style=\"color: rgb(125, 151, 38);\">\"plupload\/js\/plupload.full.min.js\"<\/span>&gt;<\/span><span class=\"undefined\"><\/span><span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;\/<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">script<\/span>&gt;<\/span><\/pre>\n<p>Define Plupload uploader with configuration options using JavaScript.<\/p>\n<ul class=\"bullet_disk_list\">\n<li><code>browse_button<\/code>: Element ID of the file browse button.<\/li>\n<li><code>url<\/code>: The URL of the server-side script that handles the file upload process.<\/li>\n<li><code>multi_selection<\/code>: Set true if you want to allow select multiple files at once.<\/li>\n<li><code>max_file_size<\/code>: Maximum file size that is allowed to upload.<\/li>\n<li><code>mime_types<\/code>: Type of the files that are allowed to upload.<\/li>\n<\/ul>\n<p>Initialize Plupload uploader with <code>init()<\/code> method.<\/p>\n<pre style=\"color: rgb(95, 94, 78);\"><span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">script<\/span>&gt;<\/span>\r\n<span style=\"color: rgb(110, 107, 94);\"><span class=\"hljs-comment\" style=\"color: rgb(125, 122, 104);\">\/\/ Define Plupload uploader with configuration options<\/span>\r\n<span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">var<\/span> uploader = <span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">new<\/span> plupload.Uploader({\r\n    runtimes : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'html5,flash,silverlight,html4'<\/span>,\r\n    browse_button : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'fileInput'<\/span>, <span class=\"hljs-comment\" style=\"color: rgb(125, 122, 104);\">\/\/ you can pass an id...<\/span>\r\n    url : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'upload.php'<\/span>,\r\n    flash_swf_url : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'plupload\/js\/Moxie.swf'<\/span>,\r\n    silverlight_xap_url : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'plupload\/js\/Moxie.xap'<\/span>,\r\n    multi_selection: <span class=\"hljs-literal\" style=\"color: rgb(182, 86, 17);\">false<\/span>,\r\n\t\r\n    filters : {\r\n        max_file_size : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'500mb'<\/span>,\r\n        mime_types: [\r\n            {title : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\"Image files\"<\/span>, extensions : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\"jpg,jpeg,gif,png\"<\/span>},\r\n            {title : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\"Video files\"<\/span>, extensions : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\"mp4,avi,mpeg,mpg,mov,wmv\"<\/span>},\r\n            {title : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\"Zip files\"<\/span>, extensions : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\"zip\"<\/span>},\r\n            {title : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\"Document files\"<\/span>, extensions : <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\"pdf,docx,xlsx\"<\/span>}\r\n        ]\r\n    },\r\n\r\n    init: {\r\n        PostInit: <span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">function<\/span>(<span class=\"hljs-params\" style=\"color: rgb(182, 86, 17);\"><\/span>) <\/span>{\r\n            <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">document<\/span>.getElementById(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'fileList'<\/span>).innerHTML = <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">''<\/span>;\r\n\r\n            <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">document<\/span>.getElementById(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'uploadBtn'<\/span>).onclick = <span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">function<\/span>(<span class=\"hljs-params\" style=\"color: rgb(182, 86, 17);\"><\/span>) <\/span>{\r\n                <span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">if<\/span> (uploader.files.length &lt; <span class=\"hljs-number\" style=\"color: rgb(182, 86, 17);\">1<\/span>) {\r\n                    <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">document<\/span>.getElementById(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'statusResponse'<\/span>).innerHTML = <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'&lt;p style=\"color:#EA4335;\"&gt;Please select a file to upload.&lt;\/p&gt;'<\/span>;\r\n                    <span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">return<\/span> <span class=\"hljs-literal\" style=\"color: rgb(182, 86, 17);\">false<\/span>;\r\n                }<span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">else<\/span>{\r\n                    uploader.start();\r\n                    <span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">return<\/span> <span class=\"hljs-literal\" style=\"color: rgb(182, 86, 17);\">false<\/span>;\r\n                }\r\n            };\r\n        },\r\n\r\n        FilesAdded: <span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">function<\/span>(<span class=\"hljs-params\" style=\"color: rgb(182, 86, 17);\">up, files<\/span>) <\/span>{\r\n            plupload.each(files, <span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">function<\/span>(<span class=\"hljs-params\" style=\"color: rgb(182, 86, 17);\">file<\/span>) <\/span>{\r\n                <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">document<\/span>.getElementById(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'fileList'<\/span>).innerHTML += <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'&lt;div id=\"'<\/span> + file.id + <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'\"&gt;'<\/span> + file.name + <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">' ('<\/span> + plupload.formatSize(file.size) + <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">') &lt;b&gt;&lt;\/b&gt;&lt;\/div&gt;'<\/span>;\r\n            });\r\n        },\r\n\r\n        UploadProgress: <span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">function<\/span>(<span class=\"hljs-params\" style=\"color: rgb(182, 86, 17);\">up, file<\/span>) <\/span>{\r\n            <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">document<\/span>.getElementById(file.id).getElementsByTagName(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'b'<\/span>)[<span class=\"hljs-number\" style=\"color: rgb(182, 86, 17);\">0<\/span>].innerHTML = <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'&lt;span&gt;'<\/span> + file.percent + <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\"%&lt;\/span&gt;\"<\/span>;\r\n            <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">document<\/span>.querySelector(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">\".progress\"<\/span>).innerHTML = <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'&lt;div class=\"progress-bar\" style=\"width: '<\/span>+file.percent+<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'%;\"&gt;'<\/span>+file.percent+<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'%&lt;\/div&gt;'<\/span>;\r\n        },\r\n        \r\n        FileUploaded: <span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">function<\/span>(<span class=\"hljs-params\" style=\"color: rgb(182, 86, 17);\">up, file, result<\/span>) <\/span>{\r\n            <span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">var<\/span> responseData = result.response.replace(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'\"{'<\/span>, <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'{'<\/span>).replace(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'}\"'<\/span>, <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'}'<\/span>);\r\n            <span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">var<\/span> objResponse = <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">JSON<\/span>.parse(responseData);\r\n            <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">document<\/span>.getElementById(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'statusResponse'<\/span>).innerHTML = <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'&lt;p style=\"color:#198754;\"&gt;'<\/span> + objResponse.result.message + <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'&lt;\/p&gt;'<\/span>;\r\n        },\r\n\r\n        <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">Error<\/span>: <span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: rgb(184, 84, 212);\">function<\/span>(<span class=\"hljs-params\" style=\"color: rgb(182, 86, 17);\">up, err<\/span>) <\/span>{\r\n            <span class=\"hljs-built_in\" style=\"color: rgb(182, 86, 17);\">document<\/span>.getElementById(<span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'statusResponse'<\/span>).innerHTML = <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'&lt;p style=\"color:#EA4335;\"&gt;Error #'<\/span> + err.code + <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">': '<\/span> + err.message + <span class=\"hljs-string\" style=\"color: rgb(96, 172, 57);\">'&lt;\/p&gt;'<\/span>;\r\n        }\r\n    }\r\n});\r\n\r\n<span class=\"hljs-comment\" style=\"color: rgb(125, 122, 104);\">\/\/ Initialize Plupload uploader<\/span>\r\nuploader.init();<\/span>\r\n<span class=\"hljs-tag\" style=\"color: rgb(186, 98, 54);\">&lt;\/<span class=\"hljs-name\" style=\"color: rgb(186, 98, 54);\">script<\/span>&gt;<\/span><\/pre>\n<h2>Server-side Upload Handler with PHP<\/h2>\n<p>This script handles the file uploaded process with chunk functionality.<\/p>\n<ul class=\"bullet_disk_list\">\n<li>Get selected file data using the <b>PHP $_FILES<\/b> method.<\/li>\n<li>Check whether Chunking is requested and enabled.<\/li>\n<li>Upload file in chunks to the server using PHP.<\/li>\n<\/ul>\n<p>In the <code>$targetDir<\/code> variable, specify the folder name where the uploaded files will be stored.<\/p>\n<pre><span style=\"color: #0000BB\">&lt;?php <br \/><\/span><span style=\"color: #FF8000\">\/\/&nbsp;Make&nbsp;sure&nbsp;file&nbsp;is&nbsp;not&nbsp;cached&nbsp;(as&nbsp;it&nbsp;happens&nbsp;for&nbsp;example&nbsp;on&nbsp;iOS&nbsp;devices) <br \/><\/span><span style=\"color: #0000BB\">header<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"Expires:&nbsp;Mon,&nbsp;26&nbsp;Jul&nbsp;1997&nbsp;05:00:00&nbsp;GMT\"<\/span><span style=\"color: #007700\">); <br \/><\/span><span style=\"color: #0000BB\">header<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"Last-Modified:&nbsp;\"&nbsp;<\/span><span style=\"color: #007700\">.&nbsp;<\/span><span style=\"color: #0000BB\">gmdate<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"D,&nbsp;d&nbsp;M&nbsp;Y&nbsp;H:i:s\"<\/span><span style=\"color: #007700\">)&nbsp;.&nbsp;<\/span><span style=\"color: #DD0000\">\"&nbsp;GMT\"<\/span><span style=\"color: #007700\">); <br \/><\/span><span style=\"color: #0000BB\">header<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"Cache-Control:&nbsp;no-store,&nbsp;no-cache,&nbsp;must-revalidate\"<\/span><span style=\"color: #007700\">); <br \/><\/span><span style=\"color: #0000BB\">header<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"Cache-Control:&nbsp;post-check=0,&nbsp;pre-check=0\"<\/span><span style=\"color: #007700\">,&nbsp;<\/span><span style=\"color: #0000BB\">false<\/span><span style=\"color: #007700\">); <br \/><\/span><span style=\"color: #0000BB\">header<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"Pragma:&nbsp;no-cache\"<\/span><span style=\"color: #007700\">); <br \/> <br \/><\/span><span style=\"color: #FF8000\">\/\/&nbsp;Settings <br \/><\/span><span style=\"color: #0000BB\">$targetDir&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #DD0000\">'uploads'<\/span><span style=\"color: #007700\">; <br \/><\/span><span style=\"color: #0000BB\">$cleanupTargetDir&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">true<\/span><span style=\"color: #007700\">;&nbsp;<\/span><span style=\"color: #FF8000\">\/\/&nbsp;Remove&nbsp;old&nbsp;files <br \/><\/span><span style=\"color: #0000BB\">$maxFileAge&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">5&nbsp;<\/span><span style=\"color: #007700\">*&nbsp;<\/span><span style=\"color: #0000BB\">3600<\/span><span style=\"color: #007700\">;&nbsp;<\/span><span style=\"color: #FF8000\">\/\/&nbsp;Temp&nbsp;file&nbsp;age&nbsp;in&nbsp;seconds <br \/> <br \/> <br \/>\/\/&nbsp;Create&nbsp;target&nbsp;dir <br \/><\/span><span style=\"color: #007700\">if&nbsp;(!<\/span><span style=\"color: #0000BB\">file_exists<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$targetDir<\/span><span style=\"color: #007700\">))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;@<\/span><span style=\"color: #0000BB\">mkdir<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$targetDir<\/span><span style=\"color: #007700\">); <br \/>} <br \/> <br \/><\/span><span style=\"color: #FF8000\">\/\/&nbsp;Get&nbsp;a&nbsp;file&nbsp;name <br \/><\/span><span style=\"color: #007700\">if&nbsp;(isset(<\/span><span style=\"color: #0000BB\">$_REQUEST<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"name\"<\/span><span style=\"color: #007700\">]))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #0000BB\">$fileName&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">$_REQUEST<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"name\"<\/span><span style=\"color: #007700\">]; <br \/>}&nbsp;elseif&nbsp;(!empty(<\/span><span style=\"color: #0000BB\">$_FILES<\/span><span style=\"color: #007700\">))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #0000BB\">$fileName&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">$_FILES<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"file\"<\/span><span style=\"color: #007700\">][<\/span><span style=\"color: #DD0000\">\"name\"<\/span><span style=\"color: #007700\">]; <br \/>}&nbsp;else&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #0000BB\">$fileName&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">uniqid<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"file_\"<\/span><span style=\"color: #007700\">); <br \/>} <br \/> <br \/><\/span><span style=\"color: #0000BB\">$filePath&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">$targetDir&nbsp;<\/span><span style=\"color: #007700\">.&nbsp;<\/span><span style=\"color: #0000BB\">DIRECTORY_SEPARATOR&nbsp;<\/span><span style=\"color: #007700\">.&nbsp;<\/span><span style=\"color: #0000BB\">$fileName<\/span><span style=\"color: #007700\">; <br \/> <br \/><\/span><span style=\"color: #FF8000\">\/\/&nbsp;Chunking&nbsp;might&nbsp;be&nbsp;enabled <br \/><\/span><span style=\"color: #0000BB\">$chunk&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;isset(<\/span><span style=\"color: #0000BB\">$_REQUEST<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"chunk\"<\/span><span style=\"color: #007700\">])&nbsp;?&nbsp;<\/span><span style=\"color: #0000BB\">intval<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$_REQUEST<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"chunk\"<\/span><span style=\"color: #007700\">])&nbsp;:&nbsp;<\/span><span style=\"color: #0000BB\">0<\/span><span style=\"color: #007700\">; <br \/><\/span><span style=\"color: #0000BB\">$chunks&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;isset(<\/span><span style=\"color: #0000BB\">$_REQUEST<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"chunks\"<\/span><span style=\"color: #007700\">])&nbsp;?&nbsp;<\/span><span style=\"color: #0000BB\">intval<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$_REQUEST<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"chunks\"<\/span><span style=\"color: #007700\">])&nbsp;:&nbsp;<\/span><span style=\"color: #0000BB\">0<\/span><span style=\"color: #007700\">; <br \/> <br \/> <br \/><\/span><span style=\"color: #FF8000\">\/\/&nbsp;Remove&nbsp;old&nbsp;temp&nbsp;files&nbsp;&nbsp;&nbsp;&nbsp; <br \/><\/span><span style=\"color: #007700\">if&nbsp;(<\/span><span style=\"color: #0000BB\">$cleanupTargetDir<\/span><span style=\"color: #007700\">)&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!<\/span><span style=\"color: #0000BB\">is_dir<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$targetDir<\/span><span style=\"color: #007700\">)&nbsp;||&nbsp;!<\/span><span style=\"color: #0000BB\">$dir&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">opendir<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$targetDir<\/span><span style=\"color: #007700\">))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(<\/span><span style=\"color: #DD0000\">'{\"jsonrpc\"&nbsp;:&nbsp;\"2.0\",&nbsp;\"error\"&nbsp;:&nbsp;{\"code\":&nbsp;100,&nbsp;\"message\":&nbsp;\"Failed&nbsp;to&nbsp;open&nbsp;temp&nbsp;directory.\"},&nbsp;\"id\"&nbsp;:&nbsp;\"id\"}'<\/span><span style=\"color: #007700\">); <br \/>&nbsp;&nbsp;&nbsp;&nbsp;} <br \/> <br \/>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((<\/span><span style=\"color: #0000BB\">$file&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">readdir<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$dir<\/span><span style=\"color: #007700\">))&nbsp;!==&nbsp;<\/span><span style=\"color: #0000BB\">false<\/span><span style=\"color: #007700\">)&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #0000BB\">$tmpfilePath&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">$targetDir&nbsp;<\/span><span style=\"color: #007700\">.&nbsp;<\/span><span style=\"color: #0000BB\">DIRECTORY_SEPARATOR&nbsp;<\/span><span style=\"color: #007700\">.&nbsp;<\/span><span style=\"color: #0000BB\">$file<\/span><span style=\"color: #007700\">; <br \/> <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #FF8000\">\/\/&nbsp;If&nbsp;temp&nbsp;file&nbsp;is&nbsp;current&nbsp;file&nbsp;proceed&nbsp;to&nbsp;the&nbsp;next <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #007700\">if&nbsp;(<\/span><span style=\"color: #0000BB\">$tmpfilePath&nbsp;<\/span><span style=\"color: #007700\">==&nbsp;<\/span><span style=\"color: #DD0000\">\"<\/span><span style=\"color: #007700\">{<\/span><span style=\"color: #0000BB\">$filePath<\/span><span style=\"color: #007700\">}<\/span><span style=\"color: #DD0000\">.part\"<\/span><span style=\"color: #007700\">)&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br \/> <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #FF8000\">\/\/&nbsp;Remove&nbsp;temp&nbsp;file&nbsp;if&nbsp;it&nbsp;is&nbsp;older&nbsp;than&nbsp;the&nbsp;max&nbsp;age&nbsp;and&nbsp;is&nbsp;not&nbsp;the&nbsp;current&nbsp;file <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #007700\">if&nbsp;(<\/span><span style=\"color: #0000BB\">preg_match<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">'\/\\.part$\/'<\/span><span style=\"color: #007700\">,&nbsp;<\/span><span style=\"color: #0000BB\">$file<\/span><span style=\"color: #007700\">)&nbsp;&amp;&amp;&nbsp;(<\/span><span style=\"color: #0000BB\">filemtime<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$tmpfilePath<\/span><span style=\"color: #007700\">)&nbsp;&lt;&nbsp;<\/span><span style=\"color: #0000BB\">time<\/span><span style=\"color: #007700\">()&nbsp;-&nbsp;<\/span><span style=\"color: #0000BB\">$maxFileAge<\/span><span style=\"color: #007700\">))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@<\/span><span style=\"color: #0000BB\">unlink<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$tmpfilePath<\/span><span style=\"color: #007700\">); <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br \/>&nbsp;&nbsp;&nbsp;&nbsp;} <br \/>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #0000BB\">closedir<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$dir<\/span><span style=\"color: #007700\">); <br \/>}&nbsp;&nbsp;&nbsp;&nbsp; <br \/> <br \/> <br \/><\/span><span style=\"color: #FF8000\">\/\/&nbsp;Open&nbsp;temp&nbsp;file <br \/><\/span><span style=\"color: #007700\">if&nbsp;(!<\/span><span style=\"color: #0000BB\">$out&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;@<\/span><span style=\"color: #0000BB\">fopen<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"<\/span><span style=\"color: #007700\">{<\/span><span style=\"color: #0000BB\">$filePath<\/span><span style=\"color: #007700\">}<\/span><span style=\"color: #DD0000\">.part\"<\/span><span style=\"color: #007700\">,&nbsp;<\/span><span style=\"color: #0000BB\">$chunks&nbsp;<\/span><span style=\"color: #007700\">?&nbsp;<\/span><span style=\"color: #DD0000\">\"ab\"&nbsp;<\/span><span style=\"color: #007700\">:&nbsp;<\/span><span style=\"color: #DD0000\">\"wb\"<\/span><span style=\"color: #007700\">))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;die(<\/span><span style=\"color: #DD0000\">'{\"jsonrpc\"&nbsp;:&nbsp;\"2.0\",&nbsp;\"error\"&nbsp;:&nbsp;{\"code\":&nbsp;102,&nbsp;\"message\":&nbsp;\"Failed&nbsp;to&nbsp;open&nbsp;output&nbsp;stream.\"},&nbsp;\"id\"&nbsp;:&nbsp;\"id\"}'<\/span><span style=\"color: #007700\">); <br \/>} <br \/> <br \/>if&nbsp;(!empty(<\/span><span style=\"color: #0000BB\">$_FILES<\/span><span style=\"color: #007700\">))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(<\/span><span style=\"color: #0000BB\">$_FILES<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"file\"<\/span><span style=\"color: #007700\">][<\/span><span style=\"color: #DD0000\">\"error\"<\/span><span style=\"color: #007700\">]&nbsp;||&nbsp;!<\/span><span style=\"color: #0000BB\">is_uploaded_file<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$_FILES<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"file\"<\/span><span style=\"color: #007700\">][<\/span><span style=\"color: #DD0000\">\"tmp_name\"<\/span><span style=\"color: #007700\">]))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(<\/span><span style=\"color: #DD0000\">'{\"jsonrpc\"&nbsp;:&nbsp;\"2.0\",&nbsp;\"error\"&nbsp;:&nbsp;{\"code\":&nbsp;103,&nbsp;\"message\":&nbsp;\"Failed&nbsp;to&nbsp;move&nbsp;uploaded&nbsp;file.\"},&nbsp;\"id\"&nbsp;:&nbsp;\"id\"}'<\/span><span style=\"color: #007700\">); <br \/>&nbsp;&nbsp;&nbsp;&nbsp;} <br \/> <br \/>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #FF8000\">\/\/&nbsp;Read&nbsp;binary&nbsp;input&nbsp;stream&nbsp;and&nbsp;append&nbsp;it&nbsp;to&nbsp;temp&nbsp;file <br \/>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #007700\">if&nbsp;(!<\/span><span style=\"color: #0000BB\">$in&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;@<\/span><span style=\"color: #0000BB\">fopen<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$_FILES<\/span><span style=\"color: #007700\">[<\/span><span style=\"color: #DD0000\">\"file\"<\/span><span style=\"color: #007700\">][<\/span><span style=\"color: #DD0000\">\"tmp_name\"<\/span><span style=\"color: #007700\">],&nbsp;<\/span><span style=\"color: #DD0000\">\"rb\"<\/span><span style=\"color: #007700\">))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(<\/span><span style=\"color: #DD0000\">'{\"jsonrpc\"&nbsp;:&nbsp;\"2.0\",&nbsp;\"error\"&nbsp;:&nbsp;{\"code\":&nbsp;101,&nbsp;\"message\":&nbsp;\"Failed&nbsp;to&nbsp;open&nbsp;input&nbsp;stream.\"},&nbsp;\"id\"&nbsp;:&nbsp;\"id\"}'<\/span><span style=\"color: #007700\">); <br \/>&nbsp;&nbsp;&nbsp;&nbsp;} <br \/>}&nbsp;else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!<\/span><span style=\"color: #0000BB\">$in&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;@<\/span><span style=\"color: #0000BB\">fopen<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"php:\/\/input\"<\/span><span style=\"color: #007700\">,&nbsp;<\/span><span style=\"color: #DD0000\">\"rb\"<\/span><span style=\"color: #007700\">))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(<\/span><span style=\"color: #DD0000\">'{\"jsonrpc\"&nbsp;:&nbsp;\"2.0\",&nbsp;\"error\"&nbsp;:&nbsp;{\"code\":&nbsp;101,&nbsp;\"message\":&nbsp;\"Failed&nbsp;to&nbsp;open&nbsp;input&nbsp;stream.\"},&nbsp;\"id\"&nbsp;:&nbsp;\"id\"}'<\/span><span style=\"color: #007700\">); <br \/>&nbsp;&nbsp;&nbsp;&nbsp;} <br \/>} <br \/> <br \/>while&nbsp;(<\/span><span style=\"color: #0000BB\">$buff&nbsp;<\/span><span style=\"color: #007700\">=&nbsp;<\/span><span style=\"color: #0000BB\">fread<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$in<\/span><span style=\"color: #007700\">,&nbsp;<\/span><span style=\"color: #0000BB\">4096<\/span><span style=\"color: #007700\">))&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #0000BB\">fwrite<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$out<\/span><span style=\"color: #007700\">,&nbsp;<\/span><span style=\"color: #0000BB\">$buff<\/span><span style=\"color: #007700\">); <br \/>} <br \/> <br \/>@<\/span><span style=\"color: #0000BB\">fclose<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$out<\/span><span style=\"color: #007700\">); <br \/>@<\/span><span style=\"color: #0000BB\">fclose<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$in<\/span><span style=\"color: #007700\">); <br \/> <br \/><\/span><span style=\"color: #FF8000\">\/\/&nbsp;Check&nbsp;if&nbsp;file&nbsp;has&nbsp;been&nbsp;uploaded <br \/><\/span><span style=\"color: #007700\">if&nbsp;(!<\/span><span style=\"color: #0000BB\">$chunks&nbsp;<\/span><span style=\"color: #007700\">||&nbsp;<\/span><span style=\"color: #0000BB\">$chunk&nbsp;<\/span><span style=\"color: #007700\">==&nbsp;<\/span><span style=\"color: #0000BB\">$chunks&nbsp;<\/span><span style=\"color: #007700\">-&nbsp;<\/span><span style=\"color: #0000BB\">1<\/span><span style=\"color: #007700\">)&nbsp;{ <br \/>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #FF8000\">\/\/&nbsp;Strip&nbsp;the&nbsp;temp&nbsp;.part&nbsp;suffix&nbsp;off&nbsp; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #0000BB\">rename<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"<\/span><span style=\"color: #007700\">{<\/span><span style=\"color: #0000BB\">$filePath<\/span><span style=\"color: #007700\">}<\/span><span style=\"color: #DD0000\">.part\"<\/span><span style=\"color: #007700\">,&nbsp;<\/span><span style=\"color: #0000BB\">$filePath<\/span><span style=\"color: #007700\">); <br \/>} <br \/> <br \/><\/span><span style=\"color: #FF8000\">\/\/&nbsp;Return&nbsp;Success&nbsp;JSON-RPC&nbsp;response <br \/><\/span><span style=\"color: #007700\">die(<\/span><span style=\"color: #DD0000\">'{\"jsonrpc\"&nbsp;:&nbsp;\"2.0\",&nbsp;\"result\"&nbsp;:&nbsp;{\"status\":&nbsp;200,&nbsp;\"message\":&nbsp;\"The&nbsp;file&nbsp;has&nbsp;been&nbsp;uploaded&nbsp;successfully!\"}}'<\/span><span style=\"color: #007700\">); <br \/><\/span><\/pre>\n<p class=\"seeAlso\"><span><\/span><a href=\"https:\/\/www.codexworld.com\/file-upload-with-progress-bar-using-jquery-ajax-php\/\">File Upload with Progress Bar using jQuery Ajax and PHP<\/a><\/p>\n<h2>Conclusion<\/h2>\n<p>In most cases, your server does not allow access to the PHP configuration file (php.ini) which lead difficult to allow large files to be uploaded. The <b>chunk file upload<\/b> can make it possible to upload a large file to the server without any changes in PHP configurations (php.ini). This example script allows you to implement chunk upload functionality to upload large files using PHP. You can allow the user to upload large files to the server in chunks without page refresh using JavaScript and PHP.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are a few ways to deal with large file uploads in PHP. The easiest way is to increase the maximum upload size limit in the PHP configuration file (php.ini) on the server. If you <\/p>\n","protected":false},"author":1,"featured_media":4988,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[4],"tags":[363,132,66,14,67],"class_list":["post-4985","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","tag-chunk","tag-file","tag-javascript","tag-php","tag-upload","cat-4-id","has_thumb"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Chunk File Upload with JavaScript using PHP - CodexWorld<\/title>\n<meta name=\"description\" content=\"Chunk file upload with PHP - Upload large files in chunks using PHP. Allow user to upload a large file to the server with file split and chunk feature in PHP.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Chunk File Upload with JavaScript using PHP - CodexWorld\" \/>\n<meta property=\"og:description\" content=\"Chunk file upload with PHP - Upload large files in chunks using PHP. Allow user to upload a large file to the server with file split and chunk feature in PHP.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/\" \/>\n<meta property=\"og:site_name\" content=\"CodexWorld\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/codexworld\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/codexworld\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-17T05:34:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-17T05:36:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codexworld.com\/wp-content\/uploads\/2022\/06\/chunk-file-upload-with-javascript-using-php-codexworld.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1366\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"CodexWorld\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@codexworldblog\" \/>\n<meta name=\"twitter:site\" content=\"@codexworldweb\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"CodexWorld\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/\"},\"author\":{\"name\":\"CodexWorld\",\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/#\\\/schema\\\/person\\\/9da51d8fa3cdefeb5ec9c69136d4baf0\"},\"headline\":\"Chunk File Upload with JavaScript using PHP\",\"datePublished\":\"2022-06-17T05:34:52+00:00\",\"dateModified\":\"2022-06-17T05:36:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/\"},\"wordCount\":477,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codexworld.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/chunk-file-upload-with-javascript-using-php-codexworld.png\",\"keywords\":[\"Chunk\",\"File\",\"JavaScript\",\"PHP\",\"Upload\"],\"articleSection\":[\"PHP\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/\",\"url\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/\",\"name\":\"Chunk File Upload with JavaScript using PHP - CodexWorld\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codexworld.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/chunk-file-upload-with-javascript-using-php-codexworld.png\",\"datePublished\":\"2022-06-17T05:34:52+00:00\",\"dateModified\":\"2022-06-17T05:36:51+00:00\",\"description\":\"Chunk file upload with PHP - Upload large files in chunks using PHP. Allow user to upload a large file to the server with file split and chunk feature in PHP.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codexworld.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/chunk-file-upload-with-javascript-using-php-codexworld.png\",\"contentUrl\":\"https:\\\/\\\/www.codexworld.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/chunk-file-upload-with-javascript-using-php-codexworld.png\",\"width\":1366,\"height\":768,\"caption\":\"chunk-file-upload-with-javascript-using-php-codexworld\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/chunk-file-upload-with-javascript-using-php\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codexworld.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chunk File Upload with JavaScript using PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/#website\",\"url\":\"https:\\\/\\\/www.codexworld.com\\\/\",\"name\":\"CodexWorld\",\"description\":\"Web &amp; Mobile App Development Company\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codexworld.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/#organization\",\"name\":\"CodexWorld\",\"url\":\"https:\\\/\\\/www.codexworld.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codexworld.com\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/codexworld-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.codexworld.com\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/codexworld-logo.png\",\"width\":200,\"height\":19,\"caption\":\"CodexWorld\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/codexworld\",\"https:\\\/\\\/x.com\\\/codexworldweb\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/codexworld\",\"https:\\\/\\\/www.youtube.com\\\/codexworld\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codexworld.com\\\/#\\\/schema\\\/person\\\/9da51d8fa3cdefeb5ec9c69136d4baf0\",\"name\":\"CodexWorld\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cf4999db3b409de559f80677afa01729bb2eeda19be273c254e8b2c22729e386?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cf4999db3b409de559f80677afa01729bb2eeda19be273c254e8b2c22729e386?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cf4999db3b409de559f80677afa01729bb2eeda19be273c254e8b2c22729e386?s=96&r=g\",\"caption\":\"CodexWorld\"},\"description\":\"CodexWorld is a programming blog, one-stop destination for web professionals \u2014 developers, programmers, freelancers, and site owners.\",\"sameAs\":[\"http:\\\/\\\/www.codexworld.com\",\"https:\\\/\\\/www.facebook.com\\\/codexworld\",\"https:\\\/\\\/x.com\\\/codexworldblog\"],\"url\":\"https:\\\/\\\/www.codexworld.com\\\/author\\\/nitya192265\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Chunk File Upload with JavaScript using PHP - CodexWorld","description":"Chunk file upload with PHP - Upload large files in chunks using PHP. Allow user to upload a large file to the server with file split and chunk feature in PHP.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/","og_locale":"en_US","og_type":"article","og_title":"Chunk File Upload with JavaScript using PHP - CodexWorld","og_description":"Chunk file upload with PHP - Upload large files in chunks using PHP. Allow user to upload a large file to the server with file split and chunk feature in PHP.","og_url":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/","og_site_name":"CodexWorld","article_publisher":"https:\/\/www.facebook.com\/codexworld","article_author":"https:\/\/www.facebook.com\/codexworld","article_published_time":"2022-06-17T05:34:52+00:00","article_modified_time":"2022-06-17T05:36:51+00:00","og_image":[{"width":1366,"height":768,"url":"https:\/\/www.codexworld.com\/wp-content\/uploads\/2022\/06\/chunk-file-upload-with-javascript-using-php-codexworld.png","type":"image\/png"}],"author":"CodexWorld","twitter_card":"summary_large_image","twitter_creator":"@codexworldblog","twitter_site":"@codexworldweb","twitter_misc":{"Written by":"CodexWorld","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/#article","isPartOf":{"@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/"},"author":{"name":"CodexWorld","@id":"https:\/\/www.codexworld.com\/#\/schema\/person\/9da51d8fa3cdefeb5ec9c69136d4baf0"},"headline":"Chunk File Upload with JavaScript using PHP","datePublished":"2022-06-17T05:34:52+00:00","dateModified":"2022-06-17T05:36:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/"},"wordCount":477,"commentCount":2,"publisher":{"@id":"https:\/\/www.codexworld.com\/#organization"},"image":{"@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codexworld.com\/wp-content\/uploads\/2022\/06\/chunk-file-upload-with-javascript-using-php-codexworld.png","keywords":["Chunk","File","JavaScript","PHP","Upload"],"articleSection":["PHP"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/","url":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/","name":"Chunk File Upload with JavaScript using PHP - CodexWorld","isPartOf":{"@id":"https:\/\/www.codexworld.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/#primaryimage"},"image":{"@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codexworld.com\/wp-content\/uploads\/2022\/06\/chunk-file-upload-with-javascript-using-php-codexworld.png","datePublished":"2022-06-17T05:34:52+00:00","dateModified":"2022-06-17T05:36:51+00:00","description":"Chunk file upload with PHP - Upload large files in chunks using PHP. Allow user to upload a large file to the server with file split and chunk feature in PHP.","breadcrumb":{"@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/#primaryimage","url":"https:\/\/www.codexworld.com\/wp-content\/uploads\/2022\/06\/chunk-file-upload-with-javascript-using-php-codexworld.png","contentUrl":"https:\/\/www.codexworld.com\/wp-content\/uploads\/2022\/06\/chunk-file-upload-with-javascript-using-php-codexworld.png","width":1366,"height":768,"caption":"chunk-file-upload-with-javascript-using-php-codexworld"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codexworld.com\/chunk-file-upload-with-javascript-using-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codexworld.com\/"},{"@type":"ListItem","position":2,"name":"Chunk File Upload with JavaScript using PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.codexworld.com\/#website","url":"https:\/\/www.codexworld.com\/","name":"CodexWorld","description":"Web &amp; Mobile App Development Company","publisher":{"@id":"https:\/\/www.codexworld.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codexworld.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codexworld.com\/#organization","name":"CodexWorld","url":"https:\/\/www.codexworld.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codexworld.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.codexworld.com\/wp-content\/uploads\/2014\/09\/codexworld-logo.png","contentUrl":"https:\/\/www.codexworld.com\/wp-content\/uploads\/2014\/09\/codexworld-logo.png","width":200,"height":19,"caption":"CodexWorld"},"image":{"@id":"https:\/\/www.codexworld.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/codexworld","https:\/\/x.com\/codexworldweb","https:\/\/www.linkedin.com\/company\/codexworld","https:\/\/www.youtube.com\/codexworld"]},{"@type":"Person","@id":"https:\/\/www.codexworld.com\/#\/schema\/person\/9da51d8fa3cdefeb5ec9c69136d4baf0","name":"CodexWorld","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cf4999db3b409de559f80677afa01729bb2eeda19be273c254e8b2c22729e386?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cf4999db3b409de559f80677afa01729bb2eeda19be273c254e8b2c22729e386?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cf4999db3b409de559f80677afa01729bb2eeda19be273c254e8b2c22729e386?s=96&r=g","caption":"CodexWorld"},"description":"CodexWorld is a programming blog, one-stop destination for web professionals \u2014 developers, programmers, freelancers, and site owners.","sameAs":["http:\/\/www.codexworld.com","https:\/\/www.facebook.com\/codexworld","https:\/\/x.com\/codexworldblog"],"url":"https:\/\/www.codexworld.com\/author\/nitya192265\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.codexworld.com\/wp-content\/uploads\/2022\/06\/chunk-file-upload-with-javascript-using-php-codexworld.png","jetpack_shortlink":"https:\/\/wp.me\/p6bxIh-1ip","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/posts\/4985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/comments?post=4985"}],"version-history":[{"count":3,"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/posts\/4985\/revisions"}],"predecessor-version":[{"id":4989,"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/posts\/4985\/revisions\/4989"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/media\/4988"}],"wp:attachment":[{"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/media?parent=4985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/categories?post=4985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codexworld.com\/wp-json\/wp\/v2\/tags?post=4985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}