1
私は、JavaScriptとjQueryをページ情報に基づいて動的に生成するSVGのかなり複雑なコードを持っています。SVGからAJAX APIへのポスト
私はAJAXポストを保存しています。
これを変換して画像データを正しく送信できないのはなぜですか?
$.get(url, function(xml) {
var promises = [];
$("record", xml).each(function() {
var url = $("f#9 url", this).text();
xhr.responseType = "arraybuffer";
xhr.onload = function() {
var arrayBuffer = xhr.response;
var base64 = btoa([].reduce.call(new Uint8Array(arrayBuffer), function(p, c) {
return p + String.fromCharCode(c)
}, ''))
var req = "";
req += "<qdbapi>";
req += "<field fid='6' filename='" + name + "'>" + base64 + "</field>";
req += "<field fid='54' >" + Rid + "</field>";
req += "<field fid='44' >" + comment + "</field>";
req += "</qdbapi>";
...その後AJAXポストを:
var canvas = $("#canvas")[0];
var string= canvas.toDataURL("image/png");
base64=string.replace("data:image/png;base64,", "");
var rid = kRid || "";
var fileN = " Product " + rid + ".png";
var req = "";
req += "<qdbapi>";
req += "<field fid='323' filename='" + fileN + "'>" + base64 + "</field>";
req += "</qdbapi>";
$.ajax({
type: "POST",
contentType: "text/xml",
dataType: "xml",
processData: false,
//url altered
url: "https://removed.quickbase.com/db/removedDBID?act=API_EditRecord&rid=" + rid,
data: req,
success: function(responce) {
//auto reload page
var str = window.location.href;
setTimeout(function() {
window.location.href = str;
}, 5000);
}
})
アイデアは、私は、現在のPNGファイルを取得し、それらを移動するために、他のウェアを使用するコードのこのスニペットから来ました。
私はこれをPHP経由で行うことはできません。
...
をし、それが動作huzza base64文字列Base64エンコーディングは、3つのsrc文字が4つの出力文字に変換されることを意味します。入力の長さが3の倍数でない場合は、NULL(0x0)を使用するようにパディングされます。もっと詳しくはこちらをご覧ください:https://en.wikipedia.org/wiki/Base64#Output_Padding – enhzflep
私は盲目的ではありませんでした。これまで書いたajaxスクリプトを使用して、フォーマットがpngでコンソール彼らの最後には「==」があった。盲目的には、私は入力ストリームの長さをチェックすることなく意味します。 –
チェックしたすべてのファイルが最後に '=='を持っていたことは単なるチャンスです。使用される圧縮の実際の程度に応じて、同じ寸法を有する2つのPNGは明らかに異なる長さを有し、したがってパディング要件を有することができる。 – enhzflep