2

对于基于 Web 的应用程序,我们希望能够让人们在 Ipad 上签名。运行 IOS 我们使用画布元素进行绘制,然后将其上传到 IBM I Service.running net.data 它在 chrome 和 firefox 上运行良好个人电脑。

尽管请求似乎是空的,但在 safari 或 chrome 中的 ipad 上。我正在寻找几个小时,似乎无法找出这段代码有什么问题。

有人知道我可以解决这个问题吗?顺便说一句,我们没有使用 jquery。下面是我们使用的代码的一部分

谢谢!合资公司

GUI.Signature.dataURItoBlob = function(dataURI) {
  var binary = atob(dataURI.split(',')[1]);;
  var array = [];
  var content = null;
  for(var i = 0; i < binary.length; i++) {
    array.push(binary.charCodeAt(i));
  }
  content= new Uint8Array(array);
  return new Blob([content], {type: 'image/jpeg'}); 
};


GUI.Signature.send = function(){
  if(!GUI.Signature.isEnabled()){return;}
  var request = new XMLHttpRequest();
  var dataURL = GUI.Signature.canvas.toDataURL('image/jpeg', 0.8);
  var blob = GUI.Signature.dataURItoBlob(dataURL);
  var fd = new FormData(GLOBAL.activeForm);
  var fsUri = GLOBAL.activeForm.action.replace("MAIN","UPLOAD");

  fd.append("signature", blob);
  fd.append("blobName","signature" );

  request.open('POST', fsUri, false);
  request.send(fd);

};
4

1 回答 1

0

问题确实是将 Uint8Array 附加到 Blob 对象。将 Uint8Array 包装在 ArrayBuffer 中可以解决问题

它在 这里得到了回答

于 2013-01-24T14:47:13.083 回答