-1
私はPHPにそのオブジェクトを渡すことができ、FILE変数でそのオブジェクトにアクセスできるように、Javaスクリプトでbase64でエンコードされた文字列をファイルオブジェクトに変換する必要があります。ここでjavascriptでbase64文字列をファイルオブジェクトに変換する方法はありますか?
は私のコードです:
$(document).delegate(':file', 'change', function() {
files = !!this.files ? this.files : [];
if (!files.length || !window.FileReader)
return; // no file selected, or no FileReader support
filenum = $(this).attr('data');
$("form#cropmodal #filenum").val(filenum);
var oMyForm = new FormData();
for (i = 0; i < files.length; i++) {
var ext = $("#ImgId" + filenum).val().split('.').pop().toLowerCase();
output_format = ext;
if ($.inArray(ext, ['gif', 'png', 'jpg', 'jpeg']) == -1) {
alert('Invalid extension');
return false;
}
var mime_type = "image/jpeg";
if (typeof output_format !== "undefined" && output_format == "png") {
mime_type = "image/png";
}
var reader = new FileReader();
reader.readAsArrayBuffer(files[i]);
reader.onload = function (event) {
// blob stuff
var blob = new Blob([event.target.result]); // create blob...
window.URL = window.URL || window.webkitURL;
var blobURL = window.URL.createObjectURL(blob); // and get it's URL
// helper Image object
var image = new Image();
image.src = blobURL;
//preview.appendChild(image);
// preview commented out, I am using the canvas instead
image.onload = function() {
// have to wait till it's loaded
var cvs = document.createElement('canvas');
cvs.width = image.naturalWidth;
cvs.height = image.naturalHeight;
var ctx = cvs.getContext("2d").drawImage(image, 0, 0);
var newImageData = cvs.toDataURL(mime_type, 50/100);
var result_image_obj = new Image();
result_image_obj.src = newImageData;
var cvs = document.createElement('canvas');
cvs.width = result_image_obj.naturalWidth;
cvs.height = result_image_obj.naturalHeight;
var ctx = cvs.getContext("2d").drawImage(result_image_obj, 0, 0);
var type = "image/jpeg";
var data = cvs.toDataURL(type);
data = data.replace('data:' + type + ';base64,', '');
var the_file = new Blob([window.atob(data)], {type: 'image/jpeg', encoding: 'utf-8'});
oMyForm.append("media[]", the_file);
oMyForm.append("_token", "{{ csrf_token() }}");
}
};
}
});私はあなたが実際にここでやろうとしているものは不明である、それは「ブロブオブジェクト」が表示されますが、私は、「オブジェクト・ファイル」
を必要とする「the_file」警告
。いくつかの行のサンプルコードは、** guesses **の束ではなく便利な答えがほしい場合には非常に便利です** – RiggsFolly
私はちょうどコードを追加しました。 –
ちょうど解決を得ました:http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdataありがとう@Stoive –