0

我以前看过这个问题,但我认为我有不同的情况,所以我不会以任何方式发布它。所以我的问题很简单,正如主题所说的那样。我有一张我写到画布上的图像,我可以将其转换为数据,然后他们将其保存在远程服务器上。

我尝试了 AJAX XHttp 如下

imageformdata.append("FILE_NAME", filename);          
imageformdata.append(filename, image);
var oReq = new XMLHttpRequest();
oReq.onload = function(oEvent) {
    if (oReq.status == 200) {
      document.getElementById('response').innerHTML = "Uploaded!";
    } else {
      document.getElementById('response').innerHTML = "not Uploaded!";
    }
 };
oReq.open("POST", "http://localhost:18000/");
oReq.send(imageformdata);

但我无法编辑服务器以避免访问控制允许来源,所以对我来说似乎 AJAX 是不可能的。我想知道我的想法是否正确,或者是否有其他方法可以解决这个问题。

我尝试做的第二个选项是手动创建一个表单,然后包含输入类型文件,然后我意识到我无法使用 Javascript 选择文件,或者我可以。如果是的话,希望有人能帮助我。我的代码如下。

var form= document.createElement('form');
var input = document.createElement('input');
input.type = 'file';
form.method = "POST";
form.action = "http://localhost:17999/";            
var image = new Image();
image.onload = function(){
    localcontext.drawImage(image,0, 0);
};
image.src = "img/1.jpg";          

input.value = localcanvas.toDataURL('image/jpeg');
form.appendChild(input);
var now = new Date();
filename = filename+"_"+now.getFullYear()+ now.getMonth() +now.getDate()+"_"+now.getHours()+now.getMinutes()+now.getSeconds()+ ".jpg";
form.appendChild(input);
document.body.appendChild(form);
form.submit();

因此,作为一种解决方法,我认为我的选择是使用 websocket 并为 web 客户端创建一个客户端服务器应用程序以与服务器套接字(Java,)通信我之前没有做过 websockets,所以请让我知道这是否可行或者是Access-Control-Allow-Origin 问题也适用于此。

4

1 回答 1

0

事实证明,网络套接字解决方案对我来说就像一个魅力。我从 web 客户端创建了二进制流,然后从 python 后端的服务器套接字读取它。唯一的问题是二进制转换和传输会增加大量开销。如果有人需要代码,请回复。

于 2013-09-11T06:00:17.033 回答