是否可以从客户端的文件中获取信息而无需上传文件?

时间:2012-07-31 23:31:15

标签: javascript jquery html5 file-upload metadata

我允许我的用户上传mp3文件,这样我就可以阅读元数据并提取歌曲名称和歌手名称。

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

是否可以在客户端获取这两条信息而无需将文件复制到我的服务器?

3 个答案:

答案 0 :(得分:4)

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

您基本上使用FileReader将文件内容放入内存,然后手动扫描(在客户端javascript中)找到您想要的MP3标签。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您喜欢这样:工作演示 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

希望它有助于你的事业:),休息随意玩这个演示。

P.S。 - 在演示中它也会提醒文件名。

<强>码

$(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"); 
     }    
  }); 
});​