хмммм, я думаю, що існує набагато ефективніший спосіб зробити це спеціально для людей, які хочуть націлити весь браузер, а не лише браузер, що підтримується FormData
ідея приховати IFRAME на сторінці та зробити звичайне подання для прикладу From inside 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>
Найважливіше зробити ціль форми прихованим ідентифікатором iframe або ім'ям
та enctype multipart / form-data, щоб дозволити приймати фотографії
сторона 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
<?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);
?>