BlobとFileオブジェクトAPIと互換性の問題
3244 ワード
先日、ファイルをアップロードしている間に、Blobの対象とFileの対象との関連問題に遭遇しました.資料を調べた結果、次のようになりました.
blob
ブラウザの環境下で、blobに対する参照(ブラウザは自動的に統合されます)を実現できます.しかし、nodeJS環境下でどうやってblob参照を実現しますか?ファイルの着信依存?具体的にどのようにblobを使いますか?
要求:まずNode環境で簡単なファイルをアップロードします.Fileは特別なタイプのBlobであり、APIインターフェースでもあります.
参考サイト:https://stackoverflow.com/questions/15293694/blob-constructor-browser-compatibility
一部のブラウザはblobをサポートしていません.古いBlob Buiderをサポートしています.
SoThe Dessktop Chrome warning wans a bug in rome whirome whirome whihich fixed since 2013-03-21.Mobile Chrome is giving you a TypeEEror because the blob conststststststorortos s s s s s.Blppordededestststststrererererererererererererererededededes.Blablblblblblblbldedededes.Blablblblblbldededededededes.Blablblblblblblblblbleeeeeeeeeeeeeebubububudededes.Blspspspspspspsptrtrs.This is the case for FF 6-12、Chrome 8-19、Mobile Chrome、IE 10 and Android 3.0-42.2.
まずブラウザのバージョンがBlobをサポートしているかどうかを判断します.
Blob API
Binary large ObjectバイナリオブジェクトデータベースにおけるBlobはバイナリコンテナ(MYSQL)であり、ウェブAPIにおいて、Blobオブジェクトはファイルと同様のバイナリデータを表し、FileオブジェクトはBlobオブジェクトから継承される.
Blobオブジェクトを作成します.Blobパラメータ1:配列タイプパラメータ2:オプション、type、データのタイプconsolie.log(blob 1)を表します.blobオブジェクトを出力するデータを含むバイト数
var blob 2=blob 1.slice(start,end,contentType)新しいBlobオブジェクトを返します.元のオブジェクトに指定された範囲のデータを使用します.大きなファイルを分割してアップロードします.
ファイルオブジェクト
File API
01ブラウザ互換性検査
03ファイルを読み込むFileReaderはコンポーネントのライフサイクルに似たインターフェースとイベントを提供しています.Filereaderのライフサイクル:onloadstart-onprogress-onload-onalabot-onerror-onloadedはローカルファイルをプレビューし、ローカル画像をプレビューし、読み取りの進捗を監視します.
04ファイルを分割する場合はファイルが大きく、分割して読み込んでアップロードするのが一番いい(断点アップロード)slice方法(会社はこの面でよくやるべき)
関連サイト:
https://developer.mozilla.org/zh-CN/docs/Web/API/Blob
https://www.cnblogs.com/xiaoqian1993/p/5775135.html
https://www.cnblogs.com/leejersey/p/4772504.html
https://segmentfault.com/a/1190000011563430
http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html
blob
ブラウザの環境下で、blobに対する参照(ブラウザは自動的に統合されます)を実現できます.しかし、nodeJS環境下でどうやってblob参照を実現しますか?ファイルの着信依存?具体的にどのようにblobを使いますか?
要求:まずNode環境で簡単なファイルをアップロードします.Fileは特別なタイプのBlobであり、APIインターフェースでもあります.
参考サイト:https://stackoverflow.com/questions/15293694/blob-constructor-browser-compatibility
一部のブラウザはblobをサポートしていません.古いBlob Buiderをサポートしています.
SoThe Dessktop Chrome warning wans a bug in rome whirome whirome whihich fixed since 2013-03-21.Mobile Chrome is giving you a TypeEEror because the blob conststststststorortos s s s s s.Blppordededestststststrererererererererererererererededededes.Blablblblblblblbldedededes.Blablblblblbldededededededes.Blablblblblblblblblbleeeeeeeeeeeeeebubububudededes.Blspspspspspspsptrtrs.This is the case for FF 6-12、Chrome 8-19、Mobile Chrome、IE 10 and Android 3.0-42.2.
まずブラウザのバージョンがBlobをサポートしているかどうかを判断します.
var array = new Int8Array([17, -45.3]);
try{
var jpeg = new Blob( [array], {type : "image/jpeg"});
}
catch(e){
// TypeError old chrome and FF
window.BlobBuilder = window.BlobBuilder ||
window.WebKitBlobBuilder ||
window.MozBlobBuilder ||
window.MSBlobBuilder;
if(e.name == 'TypeError' && window.BlobBuilder){
var bb = new BlobBuilder();
bb.append(array.buffer);
var jpeg = bb.getBlob("image/jpeg");
}
else if(e.name == "InvalidStateError"){
// InvalidStateError (tested on FF13 WinXP)
var jpeg = new Blob( [array.buffer], {type : "image/jpeg"});
}
else{
// We're screwed, blob constructor unsupported entirely
}
}
結論:解決策:blobはいくつかの互換性のある問題(依然として主流のアップロード構造関数)があり、blobbuilderはすでに段階的に淘汰されました.あるいは最新のFoldインターフェースはblobの方法を集めました.Blob API
Binary large ObjectバイナリオブジェクトデータベースにおけるBlobはバイナリコンテナ(MYSQL)であり、ウェブAPIにおいて、Blobオブジェクトはファイルと同様のバイナリデータを表し、FileオブジェクトはBlobオブジェクトから継承される.
Blobオブジェクトを作成します.Blobパラメータ1:配列タイプパラメータ2:オプション、type、データのタイプconsolie.log(blob 1)を表します.blobオブジェクトを出力するデータを含むバイト数
var blob 2=blob 1.slice(start,end,contentType)新しいBlobオブジェクトを返します.元のオブジェクトに指定された範囲のデータを使用します.大きなファイルを分割してアップロードします.
ファイルオブジェクト
File API
01ブラウザ互換性検査
function isSupportFileApi() {
if(window.File && window.FileList && window.FileReader && window.Blob) {
return true;
}
return false;
}
02ファイルのハンドルJSを取得するには受動的にファイルを取得するしかありません.ユーザがイベント(ドラッグ・ファイル、フォーム提出)JSをトリガするだけで、ファイルのハンドルを取得できます.ドラッグ・イベントはブラウザを使ってファイルを開くかもしれません.preventDefault or cancalBableが必要です.03ファイルを読み込むFileReaderはコンポーネントのライフサイクルに似たインターフェースとイベントを提供しています.Filereaderのライフサイクル:onloadstart-onprogress-onload-onalabot-onerror-onloadedはローカルファイルをプレビューし、ローカル画像をプレビューし、読み取りの進捗を監視します.
04ファイルを分割する場合はファイルが大きく、分割して読み込んでアップロードするのが一番いい(断点アップロード)slice方法(会社はこの面でよくやるべき)
関連サイト:
https://developer.mozilla.org/zh-CN/docs/Web/API/Blob
https://www.cnblogs.com/xiaoqian1993/p/5775135.html
https://www.cnblogs.com/leejersey/p/4772504.html
https://segmentfault.com/a/1190000011563430
http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html