您的问题非常广泛。不过,我会尽力回答:
您的问题有 3 个逻辑层:
- 创建用户界面的 HTML
- Javascript - 处理您的图像(或任何文件)并将其发送到另一个地方。
- 您的 PHP 代码,它将接受您的图像并将其处理/保存到您的服务器。
简要概述如何解决该问题:
在 HTML 中构建一个带有文件上传字段的表单。
<form method="post" enctype="multipart/form-data">
<input type="file" name="files[]" multiple>
<input type="submit" value="Upload File" name="submit">
</form>
在您的 HTML 文件中,编写或包含将序列化表单数据的 Javascript,并将其发布到您的 PHP 文件。
<script type="text/javascript">
const url = 'process.php';
const form = document.querySelector('form');
form.addEventListener('submit', e => {
e.preventDefault();
const files = document.querySelector('[type=file]').files;
const formData = new FormData();
for (let i = 0; i < files.length; i++) {
let file = files[i];
formData.append('files[]', file);
}
// Uses browser's built in Fetch API - you can replace this with jQuery or whatever you choose.
fetch(url, {
method: 'POST',
body: formData
}).then(response => {
console.log(response);
});
});
</script>
将逻辑写入一个新的 PHP 文件(称为 process.php)以适当地处理表单数据(图像)。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['files'])) {
$errors = [];
$path = 'uploads/';
$extensions = ['jpg', 'jpeg', 'png', 'gif'];
$all_files = count($_FILES['files']['tmp_name']);
$fileNames = [];
for ($i = 0; $i < $all_files; $i++) {
$file_name = $_FILES['files']['name'][$i];
$file_tmp = $_FILES['files']['tmp_name'][$i];
$file_type = $_FILES['files']['type'][$i];
$file_size = $_FILES['files']['size'][$i];
$file_ext = strtolower(end(explode('.', $_FILES['files']['name'][$i])));
$fileNames[] = $file_name;
$file = $path . $file_name;
if (!in_array($file_ext, $extensions)) {
$errors[] = 'Extension not allowed: ' . $file_name . ' ' . $file_type;
}
if ($file_size > 2097152) {
$errors[] = 'File size exceeds limit: ' . $file_name . ' ' . $file_type;
}
if (empty($errors)) {
move_uploaded_file($file_tmp, $file);
}
}
if ($errors) {
print_r($errors);
} else {
print_r(json_encode(['file_names' => $fileNames]));
}
}
}
为了速度 - 此解决方案中的示例代码取自 https://www.taniarascia.com/how-to-upload-files-to-a-server-with-plain-javascript-and-php/
对于其他示例 - 您可以查看 StackOverflow 的其他问题。这是一个和你类似的:uploading image using javascript