Come posso recuperare $_FILES
in PHP quando carico tramite un Web Worker? Quando ho cercato di usare FormData
, ho ottenuto il seguente errore:Come caricare file in Web Worker quando FormData non è definito
Error: FormData is not defined
Questo è il mio codice:
function uploadFile(blobFile, fileName, filePart, totalChunks) {
//if I try to put this
//var formData = new FormData(); //it does not work
var xhr = new XMLHttpRequest();
xhr.open("POST", "upload.php"+"?"+"file="+fileName + filePart, true);
xhr.onload = function(e) {};
xhr.send(blobFile);
}
Quindi, in upload.php come faccio per ottenere il percorso tmp da $_FILES
? Solo nel caso, ho anche mostrare la pagina fa riferimento il lavoratore Web:
<form id="fileuploader" enctype="multipart/form-data" method="post" action="upload.php">
<label for="fileToUpload">Select Files to Upload</label><br />
<input type="file" name="fileToUpload[]" multiple="" id="fileToUpload" onchange="fileList();"/><br />
<input type="button" onclick="sendRequest();" value="Upload" />
<!-- a place for File Listing -->
<div id="fileList"></div>
</form>
<script type="text/javascript">
function sendRequest() {
var worker = new Worker("fileupload.js");
worker.onmessage = function(e) {
alert(e.data);
}
var file = document.getElementById('fileToUpload');
for(var i = 0; i < file.files.length; i++) {
worker.postMessage(file.files[i]);
}
}
L'oggetto formdata bisogno di accedere al DOM per ottenere la forma, e webworkers non ha accesso al DOM, in modo da quei due non funziona assieme. Questo non è esattamente ciò a cui sono destinati i webworker. – adeneo
@adeneo quindi vuoi dire, non c'è modo di farlo funzionare? c'è un altro modo senza usare i dati del form? perché basato su questo articolo per utilizzare il webworker per caricare il file http://kongaraju.blogspot.com/2012/07/large-file-upload-more-than-1gb-using.html sembra buono, ma non lo fa mostra la parte server – Harts
Non sono sicuro, tutto quello che so è che un webworker non può mai avere accesso al DOM, e FormData crea un oggetto praticamente basato su un modulo, e senza accesso al DOM, sarebbe difficile far compilare FormData funziona in quanto non ha affatto accesso al modulo. – adeneo