hmmmm, creo que hay una forma mucho más eficiente de hacerlo especialmente para las personas que desean apuntar a todos los navegadores y no solo a los navegadores compatibles con FormData
la idea de tener un IFRAME oculto en la página y hacer un envío normal para el ejemplo Desde dentro de IFrame
<FORM action='save_upload.php' method=post
enctype='multipart/form-data' target=hidden_upload>
<DIV><input
type=file name='upload_scn' class=file_upload></DIV>
<INPUT
type=submit name=submit value=Upload /> <IFRAME id=hidden_upload
name=hidden_upload src='' onLoad='uploadDone("hidden_upload")'
style='width:0;height:0;border:0px solid #fff'></IFRAME>
</FORM>
Lo más importante es hacer un objetivo de forma el ID de iframe oculto o el nombre
y enctype multipart / form-data para permitir aceptar fotos
lado de javascript
function getFrameByName(name) {
for (var i = 0; i < frames.length; i++)
if (frames[i].name == name)
return frames[i];
return null;
}
function uploadDone(name) {
var frame = getFrameByName(name);
if (frame) {
ret = frame.document.getElementsByTagName("body")[0].innerHTML;
if (ret.length) {
var json = JSON.parse(ret);
}
}
}
PHP de ejemplo del lado del servidor
<?php
$target_filepath = "/tmp/" . basename($_FILES['upload_scn']['name']);
if (move_uploaded_file($_FILES['upload_scn']['tmp_name'], $target_filepath)) {
$result = ....
}
echo json_encode($result);
?>