【发布时间】:2014-11-18 19:11:12
【问题描述】:
我正在努力将我的画布 URL 转换为 blob 格式,特别是 PNG 格式。当我在没有转换代码的情况下对其进行测试时,DataURL 的生成非常完美,但在尝试将其转换为 Blob 时出现了问题。我正在使用一个 html 按钮来触发带有 ID buttonTextArea 的 JavaScript 函数。
我需要将 Blob 文件链接到我的 APEX 页面项目,我使用 $s('P9_IMAGE_CODE', Blob) 格式,当我仅使用文本对其进行测试时也可以使用。处理完页面后,该项目将被发送到我的表中的 blob 列中。
这是我的代码:
$("#buttonTextArea").click(function(dataURL) {
var BASE64_MARKER = ';base64,';
var canvas = document.getElementById('myCanvas');
var dataURL = canvas.toDataURL();
if (dataURL.indexOf(BASE64_MARKER) == -1) {
var parts = dataURL.split(',');
var contentType = parts[0].split(':')[1];
var raw = decodeURIComponent(parts[1]);
return new Blob([raw], {type: contentType});
}
var parts = dataURL.split(BASE64_MARKER);
var contentType = parts[0].split(':')[1];
var raw = window.atob(parts[1]);
var rawLength = raw.length;
var uInt8Array = new Uint8Array(rawLength);
for (var i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {type: contentType});
document.getElementById("textArea").value = dataUrl;
$s('P9_IMAGE_CODE', Blob); --P9_IMAGE_CODE IS THE ITEM ON MY PAGE
});
我一直在尝试以下示例: https://github.com/blueimp/JavaScript-Canvas-to-Blob/blob/master/README.md 和 https://code.google.com/p/chromium/issues/detail?id=67587
提前谢谢你。
【问题讨论】:
-
您所指的“Blob”是这个东西:developer.mozilla.org/en-US/docs/Web/API/Blob 它不会像这样转换为 $s 的字符串。它与 Oracle BLOB 不同。我怀疑您需要编写更多代码(例如,使用 FileReader 或其他东西,我不知道)将其转换为适合发布到 Apex 的格式。
-
是的,这对你来说可能是一个很好的起点talkapex.com/2012/08/…
标签: javascript html oracle canvas oracle-apex