检查客户端上传的文件格式

时间:2015-07-01 20:37:15

标签: javascript jquery html

我正在创建一个Web门户,最终用户将上传一个csv文件,我将在服务器端(python)对该文件进行一些操作。服务器端存在一些延迟和延迟,因此我不希望从服务器向客户端发送有关上传文件格式错误的消息。有没有办法在客户端做繁重的工作可能是使用js或jquery来检查上传的文件是否是"逗号"分开与否等等?

我知道我们可以做到"接受= .csv"在html中,以便文件扩展名具有csv格式,但如何处理内容以确保。

2 个答案:

答案 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);
  }
}