問題タブ [html5-filesystem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-chrome-extension - CRUD files on local (sandboxed) filesystem with chrome-extensions
I've been trying to do some CRUD operations to a local drive using chrome extensions. I understand i won't be able to access the local file system directly, a sandboxed environment will do.
LocalStorage worked for data upto 5 mb. I'll be needing more. I've found that setting "unlimitedStorage" won't grant more to the LocalStorage.
"unlimitedStorage"
Provides an unlimited quota for storing HTML5 client-side data, such as databases and local storage files. Without this permission, the extension or app is limited to 5 MB of local storage.
Note: This permission applies only to Web SQL Database and application cache (see issue 58985). Also, it doesn't currently work with wildcard subdomains such as http://*.example.com.
I've then tried to use the FileSystemApi. But it turned out that only chrome apps can use this api.
As far as i know I'm left with 4 other options:
- WebSQL, which is deprecated.
- IndexedDB, which looks promising
- Application cache, referenced in the notes of the unlimitedStorage description.
- Storage api, Which seems to be available for both extensions and apps
I've got a hunch that indexedDb will allow some form of CRUD. I'm reluctant to use WebSQL as it's deprecated and i've yet to find information about the Application cache, although i doubt that storing data for extensions is within the boundaries of its intended purpose.
Is it possible for chrome extensions to save, load and delete files on the local file system? Am i misinformed about the LocalStorage Limitations or the use of the fileSystem Api in chrome extensions? Will IndexedDB fulfill my needs?
javascript - クロムファイルシステムtoURLを使用して画像が表示されない
ファイルシステムに画像を書き込み、それを読み込んで表示する次のコードがあります。ファイルシステム API を試す前に、base64 イメージ全体を src 属性にロードすると、イメージが正常に表示されました。問題は、画像が大きくなる可能性があるため、5MB の画像をいくつか追加すると、メモリが不足することです。そのため、それらを tmp ストレージに書き込み、URL のみを src 属性に渡すことにしました。問題は、何も表示されないことです。
最初は URL に問題があるのではないかと考えていましたが、ファイルシステム ディレクトリに移動し、参照している画像を見つけて実際のバイナリ イメージに物理的に置き換え、置き換えた画像と同じ名前に変更しました。これは問題なく機能し、画像が正しく表示されるので、URL は適切に表示されます。
私が到達できる唯一の結論は、画像の書き込みが何らかの形で間違っているということです。特に、ブロブが作成されるポイントです。私はブロブ API を調べましたが、見逃した可能性のあるものは何も表示されませんが、他のすべての人に対して機能しているように見えるため、明らかに何か間違っています。
余談ですが、画像を IndexedDB に保存し、createObjectURL を使用して画像を表示しようとしましたが、URL は正しいように見えますが、画面には何も表示されません。したがって、ファイルシステム API での試行。BLOB の作成は、どちらの場合も同じで、同じデータを使用します。
前述のように、ソース データは base64 でエンコードされた文字列です。はい、未加工のbase64データをブロブに保存しようとしましたが(プレフィックスの有無にかかわらず)、どちらも機能しませんでした。
その他の情報 - Linux Ubuntu の Chrome バージョン 28
コールバックからの出力は次のとおりです。
誰かが何らかのガイダンスを提供できない限り、私は少し立ち往生しています...
アップデート
B64encoder/decoder と atob/btoa の両方を使用して base64 イメージをエンコードおよびデコードするテストを実行しました -
結果は、btoa/atob 関数が正しく動作することを示していますが、B64 は動作しません。おそらく、元のエンコーディングで B64.encode 関数が使用されていないためです...
結果のファイルはファイルシステム TEMPORARY にあり、比較のためにオンラインの base64 エンコーダーを実行しましたが、結果はまったく異なります。問題は、ファイルシステムの一時ストレージにある間、イメージは正確なイメージであるはずですか、それともファイルシステム API だけが理解できる「何か」で埋められているのでしょうか? 元の PNG をファイル システム ディレクトリに配置し、画像が正しく表示されたことを思い出してください。これは、画像に関するメタデータ (ファイル名など) が他の場所に保持されていることを示している傾向があります...
これを実際に実装している人は、画像がファイルシステムに画像として保存されているのか、それとも追加のメタデータが埋め込まれているのかを確認できますか?
javascript - ウィンドウメッセージングを介したファイルシステム URL 共有の DOM 例外?
動的に生成されたコンテンツ ファイルの URL を iframe に共有する必要があります。URL を iframe に渡すときに DOM Exception 12 が発生します。
bufferType を指定する必要がありますか、それとも URL を送信することは可能ですか?
javascript - Javascript/HTML5 - シンプルなファイル システムが機能しない
HTML5 File System API を試すことにしたので、チュートリアルから簡単な例を入力しました。
これを実行すると、FileError
ログに記録されたオブジェクト(コード2)。また、私はWindowsを使用しています(これはシステムのセキュリティに関係があるのではないかと考えたためです)
どんな助けでも大歓迎です!
javascript - Chrome 拡張機能を使用した background.js の FileSystem
content.js で次のコードを使用していますが、正常に動作します。
しかし、これらのコードを background.js で使用すると、「Uncaught Error: TYPE_MISMATCH_ERR: DOM File Exception 11」というエラーが発生します。何か案が?ありがとう!!
javascript - HTML5 ファイル スライス + アップロード = 再帰的閉鎖?
HTML5 のファイル API を介してアップロードするために、非常に大きなファイル (数十 GB) をチャンクに分割しています。
私のコードは基本的に次のようになります(疑似コード):
問題は、これまで以上に深い閉鎖を作成していることです。これを回避する方法は本当にありませんか?何か不足していますか?最終的に巻き戻されるまでクロージャーを構築させますか?タイマーを使用して「今より多くのことを行う」状態を探しますか?
javascript - LocalFileSystem を使用して画像を保存および表示する
画像ファイルを (Wikimedia Commons から) 取得し、ローカルに保存してから表示するためのコードを少し書いてみました。ここに私のコード:
何も表示されません。Chrome のコンソールにはエラー メッセージが表示されないため、動作していない理由がわかりません。どんな手掛かり?
編集 :
次のパラメータを使用して Google Chrome を起動しても、QUOTA_EXCEEDED_ERR を意味する FileError コード 10 が実際に発生するのを見たところです。
実際、--unlimited-quota-for-files
パラメーターの有無にかかわらず同じエラーが発生しますが、これは奇妙です。しかし、ファイルエラー2が表示されません--allow-file-access-from-files