【问题标题】:Is it possible to get info from a file on the client side without uploading the file?是否可以在不上传文件的情况下从客户端的文件中获取信息?
【发布时间】:2012-08-01 07:48:04
【问题描述】:

我允许我的用户上传 mp3 文件,以便我可以读取元数据并提取歌曲标题和歌手姓名。

目前我正在上传文件并使用getId 读取元数据。上传当然会占用大量资源和带宽。上传 mp3 似乎有点浪费,因为我只需要 2 条信息,而且我什至不会对文件本身做任何事情。所以我后来把它删除了。

是否可以在不将文件复制到我的服务器的情况下在客户端获取这两条信息?

【问题讨论】:

    标签: javascript jquery html file-upload metadata


    【解决方案1】:

    您只能在实现 FileReader 接口的 HTML5 兼容浏览器中执行此操作(Firefox、Chrome、IE10、Safari 5.1+,不确定 Opera)。

    您基本上使用 FileReader 将文件的内容放入内存,然后手动扫描(在客户端 javascript 中)以查找所需的 MP3 标记。

    【讨论】:

    • 很好,我想我可以实现这一点并使用上传方法作为非投诉浏览器的后备。谢谢。
    • 实际上在调查这似乎不允许检测元数据。如果我 console.log() 文件对象,我可以看到文件大小和类型等信息,但没有元数据。
    • 您不控制台记录文件对象,您使用 FileReader 返回的数据
    • 我通过控制台记录了它以查看它返回的内容。它没有返回任何元数据。如果它没有返回我需要的东西,我该如何使用它?您能否提供一个使用 FileReader 返回的元数据的示例?
    • 这可能详细解释了您要实现的目标:ericbidelman.tumblr.com/post/8343485440/…
    【解决方案2】:

    您只能从客户端文件中获取信息,方法是上传并在服务器上处理(您不想这样做),或者分发将在客户端处理文件的客户端和只上传相关信息。选项 2 要求您开发(或共同选择)客户端应用程序并分发它。

    【讨论】:

      【解决方案3】:

      这样你的意思是:工作演示 http://jsfiddle.net/9pfLJ/

      好链接:http://jquerybyexample.blogspot.com/2012/03/how-to-check-file-size-before-uploading.html

      http://www.aibn.com/help/Learn/mimetypes.html

      希望它对您的事业有所帮助 :) ,请随意玩演示。

      附: - 在演示中它也会提醒文件名。

      代码

      $(document).ready(function() {
         $("#flUpload").change(function () 
         { 
           var iSize = ($("#flUpload")[0].files[0].size / 1024); 
      
           alert("Name of file ===> " + $("#flUpload")[0].files[0].name);
      
           if (iSize / 1024 > 1) 
           { 
              if (((iSize / 1024) / 1024) > 1) 
              { 
                  iSize = (Math.round(((iSize / 1024) / 1024) * 100) / 100);
                  $("#lblSize").html( iSize + "Gb"); 
              }
              else
              { 
                  iSize = (Math.round((iSize / 1024) * 100) / 100)
                  $("#lblSize").html( iSize + "Mb"); 
              } 
           } 
           else 
           {
              iSize = (Math.round(iSize * 100) / 100)
              $("#lblSize").html( iSize  + "kb"); 
           }    
        }); 
      });​
      

      【讨论】:

      • 不完全是,这给出了文件名和大小,但这不是来自元数据。所以这个名字可能不正确,我没有得到 Singer 的名字。无论如何,这实际上就是为什么我认为可能有一种方法可以获取更多信息,因为可以在不上传到服务器的情况下获取名称和文件大小。
      猜你喜欢
      • 2019-05-30
      • 2016-07-05
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 2022-11-11
      • 2016-02-24
      相关资源
      最近更新 更多