JavaScript 实现文件功能通常涉及文件的读取、写入、上传和下载等操作。以下是一些基础概念和相关内容:
FileReader
对象读取文件内容。URL.createObjectURL
创建下载链接。FormData
和 AJAX 请求将文件发送到服务器。download
属性的 <a>
标签来触发下载。<input type="file" id="fileInput">
<script>
document.getElementById('fileInput').addEventListener('change', function(event) {
let file = event.target.files[0];
if (file) {
let reader = new FileReader();
reader.onload = function(e) {
console.log(e.target.result); // 文件内容
};
reader.readAsText(file);
}
});
</script>
<form id="uploadForm">
<input type="file" name="file">
<button type="submit">上传</button>
</form>
<script>
document.getElementById('uploadForm').addEventListener('submit', function(event) {
event.preventDefault();
let formData = new FormData(this);
fetch('/upload', {
method: 'POST',
body: formData
}).then(response => response.json())
.then(data => console.log(data));
});
</script>
function downloadFile(content, filename, contentType) {
let blob = new Blob([content], { type: contentType });
let url = URL.createObjectURL(blob);
let a = document.createElement('a');
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
// 使用示例
let csvContent = "data:text/csv;charset=utf-8,Name,Age\nJohn,30\nJane,28";
downloadFile(csvContent, 'data.csv', 'text/csv');
原因:可能是文件类型不支持或文件过大。 解决方法:检查文件类型和大小限制,并在读取前进行验证。
原因:默认情况下,fetch
API 不提供上传进度信息。
解决方法:使用 XMLHttpRequest
或第三方库(如 Axios)来获取上传进度。
let xhr = new XMLHttpRequest();
xhr.upload.onprogress = function(event) {
if (event.lengthComputable) {
let percentComplete = (event.loaded / event.total) * 100;
console.log(percentComplete + '% uploaded');
}
};
xhr.open('POST', '/upload');
xhr.send(formData);
通过这些方法和示例代码,可以在 JavaScript 中有效地实现文件相关的功能。
领取专属 10元无门槛券
手把手带您无忧上云