我正在尝试使用此功能将文件上传到 Google 云端硬盘,该功能取自他们的 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);
最佳答案
use filereader on client side to read file data. use this demo code and try.
<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>
关于javascript - 在没有 node.js 的情况下从文件(文件系统)读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51816914/