JavaScript上传照片通常涉及到以下几个基础概念:
以下是一个简单的单文件上传示例,使用Fetch API和FormData:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>File Upload</title>
</head>
<body>
<input type="file" id="fileInput">
<button onclick="uploadFile()">Upload</button>
<script>
function uploadFile() {
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];
if (file) {
const formData = new FormData();
formData.append('file', file);
fetch('/upload', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
} else {
alert('No file selected.');
}
}
</script>
</body>
</html>问题:用户上传了不允许的文件类型或超过大小限制。 解决方法:
const allowedTypes = ['image/jpeg', 'image/png'];
const maxSize = 5 * 1024 * 1024; // 5MB
if (!allowedTypes.includes(file.type)) {
alert('Invalid file type.');
return;
}
if (file.size > maxSize) {
alert('File size exceeds limit.');
return;
}问题:用户希望看到上传进度。 解决方法:
const xhr = new XMLHttpRequest();
xhr.upload.onprogress = function(event) {
if (event.lengthComputable) {
const percentComplete = (event.loaded / event.total) * 100;
console.log(`Upload progress: ${percentComplete.toFixed(2)}%`);
}
};
xhr.open('POST', '/upload');
xhr.send(formData);问题:上传过程中出现错误,如网络中断或服务器错误。 解决方法:
xhr.onerror = function() {
console.error('Upload failed.');
};
xhr.onload = function() {
if (xhr.status !== 200) {
console.error('Server responded with:', xhr.status);
}
};通过这些方法和示例代码,可以有效地处理JavaScript中的照片上传功能,并解决常见的相关问题。