2012-07-31 10 views
14

まあ、input[type=file]のファイル属性は読み取り専用です。したがって、この入力要素にBLOBデータを書き込むことはできません。Chrome:blobのファイル入力をJavascriptで作成しますか?

Javscriptを使用して新しい入力ファイル要素を作成すると、作成時にBLOBデータを挿入することは可能ですか?私はchrome (extension)で働いているソリューションに興味があります - 他のブラウザは関係ありません。

+3

私は最近、それを試してみた、それは不可能です。 ''でファイルを変更したい場合の唯一の使用例は、アップロードする前にファイルを変更したい場合です。これを実現するメソッドを探しているなら、XMLHttpRequestレベル2仕様の 'FormData'関数を使用してください。コード例はhttp://stackoverflow.com/a/11628694(多分質問が重複する可能性があります)およびhttp://stackoverflow.com/a/11382138 –

+0

@RobWファイルの値を設定するのも便利な方法です(特に 'getUserMedia'を介して)ディスク内のファイルを選択するか、ブラウザ内でファイルを作成するオプションがある場合には、アップロードが有効であるか無効であるかをユーザに示します。これは私の使用例です。ブラウザがデフォルトでサポートしていない場合(一部のブラウザではほとんど)、ファイル入力ボックスをマイクから入力します。 – Brilliand

答えて

1

​​コンストラクタはクロム/クロム38+で利用できます。 File Constructor Sample,File APIを参照してください。

var date = new Date(), 
 
    filename = "file-" + date.getTime() + ".html"; 
 

 
var generatedFile = new File(
 
    ["<!DOCTYPE html><html><body>" + filename + "</body></html>"] 
 
    , filename 
 
    , { 
 
    type: "text/html", 
 
    lastModified: date 
 
    } 
 
); 
 

 
var objUrl = URL.createObjectURL(generatedFile); 
 

 
console.log(generatedFile, objUrl); 
 

 
var reader = new FileReader(); 
 

 
reader.addEventListener("load", function(event) { 
 
    console.log(event.target.result) 
 
}); 
 

 
reader.readAsText(generatedFile);

関連する問題