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