У меня есть следующий вид:Ajax загрузка файлов
<form method="post" enctype="multipart/form-data" id="upload" action="upload.php">
<input type="file" id="file" name="file" size="10"/>
<input id="uploadbutton" type="button" value="Upload"/>
</form>
Следующая Javascript:
$(document).ready(function() {
$("#uploadbutton").click(function() {
var filename = $("#file").val();
$.ajax({
type: "POST",
url: "upload.php",
enctype: 'multipart/form-data',
data: {
file: filename
},
success: function (text) {
alert("Data Uploaded: " + text);
}
});
});
});
и следующий PHP (в качестве теста)
echo json_encode($_POST); //uses post to check as $_FILES returns nothing
предупреждение будет сообщите мне ответную строку "file: test.jpg"
, как вы можете видеть, хотя это имя файла, а не собственно файл. Как я могу преобразовать свой файл, чтобы получить фактический файл, а не имя файла.
Заранее спасибо.
вы просто не можете сделать это таким образом. вам вместо этого нужно создать объект FormData и отправить его как данные, а 'processData' -' false'. Обратите внимание: поскольку некоторые браузеры не поддерживают объект FormData, эти браузеры не могут загружать файлы через ajax. –
Является ли это, когда совместимость начинает становиться проблемой? –
есть. Для полностью кросс-браузерного решения (или в качестве резервного для браузеров, которые не поддерживают formData) вы можете отправить свою форму в скрытый iframe. –