javascript - 从没有 node.js 的文件(文件系统)中读取
问题描述
我正在尝试使用此功能将文件上传到 Google Drive,取自他们的 Node.js示例:
function uploadFiles() {
var fileMetadata = {
'name': 'test-1.jpg'
};
var media = {
mimeType: 'image/jpeg',
body: fs.createReadStream('img/test-1.jpg')
};
gapi.client.drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id'
}, function(err, file) {
if (err) {
// Handle error
console.error(err);
} else {
console.log('File Id: ', file.id);
}
});
}
我的问题是fs.createReadStream()
线路。
由于 Node.js 是服务器端工具,require()
浏览器中不存在,如何在不使用 Node.js 的情况下从 JavaScript 中的文件创建字节流?
编辑: -gapi.client.drive.files.create()
问题
function readFile(evt) {
var fData = [];
var f = evt.target.files[0];
if (f) {
var r = new FileReader();
r.readAsText(f);
fData.unshift(f.name,f.type);
var myInt = setInterval(function() {
if (r.readyState == 2) {
fData.push(r.result);
uploadFiles(fData);
clearInterval(myInt);
}
}, 50);
} else {
alert("Failed to load file");
}
}
function uploadFiles(dataArray) {
var fileMetadata = {
'name': dataArray[0]
};
var media = {
mimeType: dataArray[1],
body: dataArray[2]
};
gapi.client.drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id'
}, function(err, file) {
console.log("Reached!");
if (err) {
console.error(err);
} else {
console.log('File Id: ', file.id);
}
});
}
document.getElementById('upFile').addEventListener('change', readFile, false);
解决方案
在客户端使用 filereader 读取文件数据。使用此演示代码并尝试。
<script type="text/javascript">
function readSingleFile(evt) {
var f = evt.target.files[0];
if (f) {
var r = new FileReader();
r.onload = function(e) {
var contents = e.target.result;
}
r.readAsText(f);
} else {
alert("Failed to load file");
}
}
document.getElementById('fileinput').addEventListener('change', readSingleFile, false);
</script>
推荐阅读
- django - 我正在尝试使用 django 内置身份验证视图在登录页面上记住我的功能
- nginx - Kubernetes 从 Ingress 获取 IP(Oracle 云)
- reactjs - react js中如何使用get方法
- python - 如何在 VS Code 中访问我的 conda 包?
- c# - Blazor UserManager 和 RoleManager 中的 Microsoft.AspNetCore.Identity 始终为空
- python - 用熊猫中的时间戳计算
- django - Django 嵌套表单
- node.js - 在 EC2 上:找不到 sudo pm2 ls 命令,但是没有 sudo 的 pm2 ls 可以
- javascript - webSocket.onopen 中的 webSocket.send() 总是失败
- flask - 如何在 Flask 中为复杂列表建模