使用ajax上传图片到后端接收的整个过程请举例
时间: 2023-08-14 11:04:56 浏览: 118
好的,这里给你举一个使用 ajax 上传图片到后端接收的例子。
前端代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>Ajax 图片上传</title>
<meta charset="utf-8">
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<input type="file" id="file">
<button onclick="upload()">上传</button>
<script>
function upload() {
var formData = new FormData();
formData.append('file', $('#file')[0].files[0]);
$.ajax({
url: 'upload.php',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (data) {
console.log(data);
},
error: function (xhr, status, error) {
console.log(xhr.responseText);
}
});
}
</script>
</body>
</html>
```
上面的代码中,我们创建了一个文件选择框和一个上传按钮。当用户选择好要上传的图片后,点击上传按钮会触发 `upload()` 函数。
`upload()` 函数会创建一个 `FormData` 对象,将选择的图片添加到其中。然后使用 `$.ajax()` 函数发起 POST 请求,将 `FormData` 对象作为请求体发送到后端的 `upload.php` 接口。
在 `$.ajax()` 函数中,我们需要设置 `processData` 和 `contentType` 为 `false`,以便让 jQuery 不自动处理数据和设置请求头。这样才能保证我们上传的是二进制数据,而不是表单数据。
后端代码:
```php
<?php
$targetDir = "uploads/";
if (!empty($_FILES["file"])) {
$fileName = basename($_FILES["file"]["name"]);
$targetFilePath = $targetDir . $fileName;
$fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION);
move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath);
echo "上传成功!";
} else {
echo "请选择要上传的文件。";
}
```
上面的代码中,我们首先定义了一个存储上传文件的目录。当用户上传文件时,我们会检查是否选择了文件,如果选择了文件,则将文件移动到指定的目录中,并返回上传成功的消息。否则,返回请选择要上传的文件的消息。
这就是使用 ajax 上传图片到后端接收的整个过程。
阅读全文