Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
30_09_2024
:
ex02.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<!-- voir ??? https://www.codexworld.com/upload-multiple-files-with-javascript-using-php/ formData.append("files[]", fileInput.files[i]); --> <div id="file_count"></div> <!-- <input type="file" id="fileUpload" multiple /> --> <form id="form_transfert_fichier" name="form_transfert_fichier" enctype="multipart/form-data"> <input type="file" id="uploadFile" name="fichiers_transfert[]" multiple="multiple" /> <br> <br> <button onclick="uploadFiles()">Upload</button> <!-- <button onclick="query()">Upload</button> --> <input type="button" value="Envoi" onclick="debug();" /> </form> <div id="upload_prev"></div> <div id="server_response">Pas de réponse du serveur</div> <style> input[type="file"] { width:100px; overflow: hidden; } .filenameupload { width: 98%; } #upload_prev { border: thin solid #000; width: 65%; padding: 0.5em 1em 1.5em 1em; } #upload_prev span { display: flex; padding: 0 5px; font-size: 12px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> var fileCount = 0; var xhr function sendFile() { document.getElementById("server_response").innerHTML = "";//clear previous server response var url = "upload_files.php"; xhr = new XMLHttpRequest(); xhr.open("POST", url, true); //xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //no longer necessary here xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { document.getElementById("server_response").innerHTML = xhr.responseText; alert(xhr.responseText); } } var formData = new FormData(); formData = traitement(); console.log(" +++++++++++++++++++++ "); for (let keyValue of formData.entries()) { console.log(keyValue); } for (var newfile of formData.getAll('file')) { console.log(newfile.name); console.log(newfile.size); } xhr.send(formData); } function envoi() { var formData = new FormData(); formData = traitement(); console.log("#########################################"); var numb = Array.from(formData.keys()).length; let indice = 0; for (const pair of formData.entries()) { console.log('${pair[0]}, ${pair[1]}'); } var retour = formData.getAll('files') console.log(" xxxx " + retour); for (let keyValue of formData.entries()) { var lulu = formData[indice]; console.log("Contenu " + lulu); console.log("Indice " + indice); ++indice; } console.log("---> " + numb); //for (var i = 0; i < numb; ++i) //for (let item of formData) //{ //var data_envoi = new FormData(); //data_envoi.append('file', item); /* document.getElementById("server_response").innerHTML = "";//clear previous server response var url = "upload_files.php"; xhr = new XMLHttpRequest(); xhr.open("POST", url, true); //xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //no longer necessary here xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { document.getElementById("server_response").innerHTML = xhr.responseText; alert(xhr.responseText); } } xhr.send(formData); */ /*for (let item of formData) { console.log(item) }*/ /*for (let keyValue of formData.entries()) { console.log(keyValue); var data_envoi = new FormData(); data_envoi.append('file', keyValue); document.getElementById("server_response").innerHTML = "";//clear previous server response var url = "upload_files.php"; xhr = new XMLHttpRequest(); xhr.open("POST", url, true); //xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //no longer necessary here xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { document.getElementById("server_response").innerHTML = xhr.responseText; alert(xhr.responseText); } } xhr.send(data_envoi); } for (var newfile of formData.getAll('file')) { console.log(newfile.name); console.log(newfile.size); //MIME type } */ } var showFileCount = function() { $('#file_count').text('# Files selected: ' + fileCount); }; showFileCount(); $(document).on('click', '.close', function() { $(this).parents('span').remove(); fileCount -= 1; showFileCount(); }) $('#uploadFile').on('change', function() { var filename = this.value; var lastIndex = filename.lastIndexOf("\\"); if (lastIndex >= 0) { filename = filename.substring(lastIndex + 1); } var files = $('#uploadFile')[0].files; for (var i = 0; i < files.length; i++) { $("#upload_prev").append('<span>' + '<div class="filenameupload">' + files[i].name + '</div>' + '<p class="close" >X</p></span>'); } fileCount += files.length; showFileCount(); }); function uploadFiles() { // var fileInput = document.getElementById('fileUpload'); // var files = fileInput.files; /*var files = uploadFile.files; var inp = document.getElementById('uploadFile'); for (var i = 0; i < inp.files.length; ++i) { var name = inp.files.item(i).name; console.log("here is a file name: " + name); traitement(files[i], name, i) }*/ //traitement(); const uploadForm = document.querySelector('form_transfert_fichier'); console.log("message ..." + uploadForm); } //function traitement(file, name, indice) function query() { //form_transfert_fichier //var inp = document.getElementById('form_transfert_fichier'); //console.log("inp"); // const formData = new FormData('form_transfert_fichier') // console.log(formData); // form_transfert_fichier console.log("message"); /*for (let keyValue of formData.entries()) { console.log(keyValue); } */ } function xhr_send(data) { document.getElementById("server_response").innerHTML = "";//clear previous server response var url = "upload_files.php"; xhr = new XMLHttpRequest(); xhr.open("POST", url, true); //xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //no longer necessary here xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { document.getElementById("server_response").innerHTML = xhr.responseText; alert(xhr.responseText); } } xhr.send(data); } function debug() { array_valide_file = []; let numb = document.getElementById("upload_prev").childNodes.length; console.log(" ----- " + numb); var theDiv = document.getElementById('upload_prev').children; console.log(" ++++ " + theDiv.length); for (var i = 0; i < theDiv.length; i++) { if (theDiv[i].tagName == 'SPAN') { var pipo = theDiv[i].children; console.log(" On a deux éléments dans le span" + pipo.length ); array_valide_file.push( pipo[0].innerHTML ); } } for (i = 0; i < array_valide_file.length; i++) { console.log("Contenu " + i + " " + array_valide_file[i] ); } var fileInput = document.getElementById('uploadFile'); //var files = fileInput.files; var inp = document.getElementById('uploadFile'); for (var i = 0; i < inp.files.length; ++i) { var name = inp.files.item(i).name; console.log("here is a file name: " + name); for (var j = 0; j < array_valide_file.length; ++j) { if( name == array_valide_file[j]) { console.log(" Bingo envoi " + name ) // maintenant on va remplir le nouveau Formdata var formData = new FormData(); formData.append('file', inp.files[i]); xhr_send(formData); } } } // pour le debug, je veux voir le contenu de formdata - on going .... /* console.log(" +++++++++++++++++++++ "); for (let keyValue of formData.entries()) { console.log(keyValue); } for (var newfile of formData.getAll('file')) { console.log(newfile.name); console.log(newfile.size); //MIME type } */ //var arraycontains = (tableau.indexOf("volvo.txt") > -1); /*if( name == "volvo.txt" ) { console.log(">>>> " + indice + " " + name + " " + file ); formData.append('file', file); }*/ //console.log("TRACE...."); return(formData); } function traitement() { //https://www.encodedna.com/javascript/practice-ground/default.htm?pg=javascript_indexof_method //var inp = document.getElementById('upload_prev'); //console.log(" ----- " + inp.length); // vide le tableau array_valide_file = []; let numb = document.getElementById("upload_prev").childNodes.length; console.log(" ----- " + numb); var theDiv = document.getElementById('upload_prev').children; console.log(" ++++ " + theDiv.length); for (var i = 0; i < theDiv.length; i++) { if (theDiv[i].tagName == 'SPAN') { var pipo = theDiv[i].children; console.log(" On a deux éléments dans le span" + pipo.length ); //for (var j = 0; j < pipo.length; j++) //{ // on prend uniquement le premier qui correspond class="filenameupload" // console.log( pipo[0].innerHTML + " " + pipo[0].className ); array_valide_file.push( pipo[0].innerHTML ); // différence entre append et push //} //console.log( theDiv[i].innerHTML ); // result.innerHTML } } for (i = 0; i < array_valide_file.length; i++) { console.log("Contenu " + i + " " + array_valide_file[i] ); } // maintenant on va remplir le nouveau Formdata var formData = new FormData(); var fileInput = document.getElementById('uploadFile'); //var files = fileInput.files; var inp = document.getElementById('uploadFile'); for (var i = 0; i < inp.files.length; ++i) { var name = inp.files.item(i).name; console.log("here is a file name: " + name); for (var j = 0; j < array_valide_file.length; ++j) { if( name == array_valide_file[j]) { console.log(" Bingo " + name ) formData.append('file', inp.files[i]); // essai à faire //formData.append("files[]", fileInput.files[i]); // google >>>> javascript post form data with multiple of files to php // https://stackoverflow.com/questions/12989442/uploading-multiple-files-using-formdata // https://www.tutorialswebsite.com/upload-multiple-files-using-javascript-and-php/ //https://www.codexworld.com/upload-multiple-files-with-form-data-using-jquery-ajax-php/ //https://hackernoon.com/how-to-create-a-multiple-files-uploader-for-your-php-application // https://www.tutorialspoint.com/how-to-select-and-upload-multiple-files-with-html-and-php-using-http-post // https://digitalfox-tutorials.com/tutorial.php?title=Preview-validate-and-upload-multiple-files-with-javascript-AJAX-and-PHP //https://blog.filestack.com/upload-multiple-files-using-javascript/ // https://www.studentstutorial.com/ajax/multiple-file-upload#google_vignette // https://www.webslesson.info/2021/07/javascript-multiple-file-upload-progress-bar-with-php.html } } } // pour le debug, je veux voir le contenu de formdata - on going .... /* console.log(" +++++++++++++++++++++ "); for (let keyValue of formData.entries()) { console.log(keyValue); } for (var newfile of formData.getAll('file')) { console.log(newfile.name); console.log(newfile.size); //MIME type } */ //var arraycontains = (tableau.indexOf("volvo.txt") > -1); /*if( name == "volvo.txt" ) { console.log(">>>> " + indice + " " + name + " " + file ); formData.append('file', file); }*/ //console.log("TRACE...."); return(formData); } function getMimeTypeFromExtension(extension = "txt") { if (extension[0] === ".") { extension = extension.substr(1); } return { "aac": "audio/aac", "abw": "application/x-abiword", "arc": "application/x-freearc", "avi": "video/x-msvideo", "azw": "application/vnd.amazon.ebook", "bin": "application/octet-stream", "bmp": "image/bmp", "bz": "application/x-bzip", "bz2": "application/x-bzip2", "cda": "application/x-cdf", "csh": "application/x-csh", "css": "text/css", "csv": "text/csv", "doc": "application/msword", "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "eot": "application/vnd.ms-fontobject", "epub": "application/epub+zip", "gz": "application/gzip", "gif": "image/gif", "htm": "text/html", "html": "text/html", "ico": "image/vnd.microsoft.icon", "ics": "text/calendar", "jar": "application/java-archive", "jpeg": "image/jpeg", "jpg": "image/jpeg", "js": "text/javascript", "json": "application/json", "jsonld": "application/ld+json", "mid": "audio/midi audio/x-midi", "midi": "audio/midi audio/x-midi", "mjs": "text/javascript", "mp3": "audio/mpeg", "mp4": "video/mp4", "mpeg": "video/mpeg", "mpkg": "application/vnd.apple.installer+xml", "odp": "application/vnd.oasis.opendocument.presentation", "ods": "application/vnd.oasis.opendocument.spreadsheet", "odt": "application/vnd.oasis.opendocument.text", "oga": "audio/ogg", "ogv": "video/ogg", "ogx": "application/ogg", "opus": "audio/opus", "otf": "font/otf", "png": "image/png", "pdf": "application/pdf", "php": "application/x-httpd-php", "ppt": "application/vnd.ms-powerpoint", "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "rar": "application/vnd.rar", "rtf": "application/rtf", "sh": "application/x-sh", "svg": "image/svg+xml", "swf": "application/x-shockwave-flash", "tar": "application/x-tar", "tif": "image/tiff", "tiff": "image/tiff", "ts": "video/mp2t", "ttf": "font/ttf", "txt": "text/plain", "vsd": "application/vnd.visio", "wav": "audio/wav", "weba": "audio/webm", "webm": "video/webm", "webp": "image/webp", "woff": "font/woff", "woff2": "font/woff2", "xhtml": "application/xhtml+xml", "xls": "application/vnd.ms-excel", "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "xml": "application/xml", "xul": "application/vnd.mozilla.xul+xml", "zip": "application/zip", "3gp": "video/3gpp", "3g2": "video/3gpp2", "7z": "application/x-7z-compressed" }[extension] || "application/octet-stream"; } </script>