我允許我的用戶上傳MP3文件,以便我可以讀取元數據並提取歌曲標題和歌手名稱。是否有可能從客戶端上的文件獲取信息而無需上傳文件?
目前我正在上傳文件並使用getId來讀取元數據。當然上傳需要很多資源和帶寬。上傳這些mp3看起來有點浪費,因爲我需要的只是2段信息,我甚至不會對文件本身做任何事情。所以我之後刪除它。
是否可以在客戶端獲取這2條信息而無需將文件複製到我的服務器?
我允許我的用戶上傳MP3文件,以便我可以讀取元數據並提取歌曲標題和歌手名稱。是否有可能從客戶端上的文件獲取信息而無需上傳文件?
目前我正在上傳文件並使用getId來讀取元數據。當然上傳需要很多資源和帶寬。上傳這些mp3看起來有點浪費,因爲我需要的只是2段信息,我甚至不會對文件本身做任何事情。所以我之後刪除它。
是否可以在客戶端獲取這2條信息而無需將文件複製到我的服務器?
你只能做這在實現的FileReader接口(火狐,Chrome,IE10,Safari瀏覽器5.1及更高版本,不知道Opera)的HTML5兼容的瀏覽器。
你基本上使用FileReader來獲取你的文件的內容到內存中,然後手動掃描(在客戶端JavaScript)爲你想要的MP3標籤。
您只能從客戶端文件獲取信息,方法是上載並在服務器上處理它(您不想執行的操作),或者分發客戶端來處理客戶端上的文件並只上傳相關信息。選項2要求您開發(或共同選擇)客戶端應用程序並分發它。
這樣你的意思是:工作演示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");
}
});
});
不完全,這給出文件名稱和大小,但這不是來自元數據。所以名字可能不正確,我沒有得到歌手的名字。無論如何,這實際上是爲什麼我認爲有可能獲得更多信息的方式,因爲可以在不上載到服務器的情況下獲取名稱和文件大小。 – TK123 2012-07-31 23:39:38
不錯,我想我可以實現這一點,並使用上傳方法作爲非投訴瀏覽器的後備。謝謝。 – TK123 2012-08-01 00:20:12
實際上,通過調查,似乎不允許檢測元數據。如果我console.log()文件對象,我可以看到像文件大小和類型但沒有元數據的信息。 – TK123 2012-08-01 00:32:00
你沒有console.log文件對象,你使用FileReader返回的數據 – gonchuki 2012-08-01 00:58:33