我正在创建一个Web门户,最终用户将上传一个csv文件,我将在服务器端(python)对该文件进行一些操作。服务器端存在一些延迟和延迟,因此我不希望从服务器向客户端发送有关上传文件格式错误的消息。有没有办法在客户端做繁重的工作可能是使用js或jquery来检查上传的文件是否是"逗号"分开与否等等?
我知道我们可以做到"接受= .csv"在html中,以便文件扩展名具有csv格式,但如何处理内容以确保。
答案 0 :(得分:0)
只能通过使用文件API(https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications)从Javascript访问本地文件 - 通过使用此功能,您可以检查内容是否符合您的期望。
答案 1 :(得分:0)
这是我用来在选择文件时显示预览图像客户端的一些代码。您应该能够将此作为起点来对文件数据执行其他操作。确定其csv是否由你决定。
明显的警告:
你仍然需要检查服务器端。任何人都可以修改你的客户端javascript来假装坏文件是好的。
另一个警告: 我很确定你可以在有效的csv文件中转义逗号字符。我认为转义字符在某些实现中也可能不同......
// Fired when the user chooses a file in the OS dialog box
// They will have clicked <input id="fileId" type="file">
document.getElementById('fileId').onchange = function (evt) {
if(!evt.target.files || evt.target.files.length === 0){
console.log('No files selected');
return;
}
var uploadTitle = evt2.target.files[0].name;
var uploadSize = evt2.target.files[0].size;
var uploadType = evt2.target.files[0].type;
// To manipulate the file you set a callback for the whole contents:
var FR = new FileReader();
// I've only used this readAsDataURL which will encode the file like data:image/gif;base64,R0lGODl...
// I'm sure there's a similar call for plaintext
FR.readAsDataURL($('#file')[0].files[0]);
FR.onload = function(evt2){
var evtData = {
filesEvent: evt,
}
var uploadData = evt2.result
console.log(uploadTitle, uploadSize, uploadType, uploadData);
}
}