我有一个有2个输入的表单。文本和文件上传。我想发送数据到ajax,然后在php中创建一个带有某个名称的文件。我有代码,但它不能工作。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<form id="form">
<input type="text" name="name"><br>
<input id="photo" name="photo" accept="image/jpeg" type="file" placeholder="Фото"><br><br>
<input name="submit" type="submit" value="Load">
</form>
<script src="ajax.js"></script>
</body>
</html>AJAX:
$(document).ready(function() {
$ = jQuery;
});
$(".photo input[name='photo']").change(function() {
var reader = new FileReader();
reader.onload = function (e) {
$('.photo img').attr('src', e.target.result);
}
reader.readAsDataURL(this.files[0]);
});
$("#form").submit(function(e) {
e.preventDefault();
var photo = document.getElementById('photo');
if(photo.files.lenght) {
if(photo.files[0].size > 500000) {
alert("Ошибка: Изображение не должно превышать размер в 500кб.");
return;
}
}
var formData = new FormData($(this)[0]);
$.ajax({
type: "POST",
url: "ajax.php",
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
success: function(data) {
}
},
);
});PHP:
<?php
function check_file_uploaded_name($filename) {
return preg_match("`^[-0-9A-Z_\.]+$`i", $filename) ? true : false;
}
function check_file_uploaded_length ($filename){
return (mb_strlen($filename,"UTF-8") > 225) ? false : true;
}
if($_SERVER['REQUEST_METHOD'] === 'POST') {
if(!$_FILES['photo']['error']) {
$name = $_FILES['photo']['name'];
if(!check_file_uploaded_name($name) || !check_file_uploaded_length($name)) {
die(json_encode(array("error" => "Wrong file name"), JSON_UNESCAPED_UNICODE));
}
if($_FILES['photo']['size'] > 500000) {
die(json_encode(array("error" => "Wrong file size"), JSON_UNESCAPED_UNICODE));
}
if (!file_exists("/photo")) {
mkdir("/photo", 0777, true);
}
move_uploaded_file($_FILES['vac-photo']['tmp_name'], "/photo/1.jpg");
}
}
?>什么都没发生。:(
https://stackoverflow.com/questions/44483719
复制相似问题