|
|
|
| Привет! Решил попробовать сделать загрузку файлов через AJAX. Как обычно попал в ступор.
Пример моего кода:
Файл index.php
<script>
$(document).ready( function() {
$('#upload').click( function() {
$.ajax({
type: "POST",
url: "upload.php",
enctype: 'multipart/form-data',
data: "images="+$('#images').val(),
success: function(html){
$('#result').html(html);
}
});
return false;
});
});
</script>
<div id="result"></div>
<form method="post" enctype="multipart/form-data">
Изображение:<br>
<input type="file" name="images" id="images"><br>
<input type="submit" id="upload" name="upload" value="Загрузить">
</form>
|
Файл загрузки upload.php
<?php
include 'action.php';
$images_ajax = $_REQUEST['images'];
echo upload_image($images_ajax);
?>
|
Файл action.php
<?php
function upload_image( $images_ajax='' ) {
$name = md5(mt_rand(1, 10000000));
$images = $images_ajax['tmp_name'];
$images_patch = "/upload";
if($images == '') {
return 'Вы не выбрали изображение';
} elseif ($images_ajax['type'] != 'image/jpg') {
return 'Ошибка формата файла.';
} else {
$full_patch = $images_patch."/".$name.'.jpg';
move_uploaded_file($images, $full_patch);
return 'Все ок';
}
}
?>
|
Что я сделал не так? | |
|
|
|
|
|
|
|
для: tima2010
(17.04.2012 в 10:25)
| | Все не так. $('#images').val() - это не бинарные данные, которые необходимо отправлять, это даже не путь к файлу в прямом смысле, это информация браузеров о загружаемом, и у каждого из них свой принцип понимания "и этого хватит" этой информации. А запрос значения атрибута, это никак не загрузка файла с диска.
Это не означает, что нельзя загрузить, можно, но это происходит не так, вообще не так, включая серверную сторону. На заметку.
Нормальная загрузка файлов в Ajax будет возможна в XMLHttpRequest2. | |
|
|
|