admin管理员组文章数量:1418627
I'm trying to upload files to Google Drive using this function, taken from their Node.js example:
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);
}
});
}
My problem here is the fs.createReadStream()
line.
Since Node.js is a server-side tool and require()
does not exist in the browser, how can I create a byte stream from a file in JavaScript without using Node.js?
EDIT: - gapi.client.drive.files.create()
problem
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);
I'm trying to upload files to Google Drive using this function, taken from their Node.js example:
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);
}
});
}
My problem here is the fs.createReadStream()
line.
Since Node.js is a server-side tool and require()
does not exist in the browser, how can I create a byte stream from a file in JavaScript without using Node.js?
EDIT: - gapi.client.drive.files.create()
problem
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);
Share
Improve this question
edited Aug 13, 2018 at 12:03
TKD21
asked Aug 13, 2018 at 7:11
TKD21TKD21
2831 gold badge5 silver badges13 bronze badges
1 Answer
Reset to default 2use 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>
本文标签: javascriptReading from file(File System) without nodejsStack Overflow
版权声明:本文标题:javascript - Reading from file(File System) without node.js - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745290767a2651778.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论