Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输入类型=";文件";设置base64图像数据_Javascript_Html_Ajax_Html5 Canvas - Fatal编程技术网

Javascript 输入类型=";文件";设置base64图像数据

Javascript 输入类型=";文件";设置base64图像数据,javascript,html,ajax,html5-canvas,Javascript,Html,Ajax,Html5 Canvas,我有一个画布,通过canvas.toDataURL('image/png')从中检索图像数据 问题:希望文件路径为值而不是base64数据 问题:如何借助将base64图像数据发送到服务器,而不将其保存到本地文件系统 我的解决方法:尝试了隐藏输入,但服务器需要filename属性 也许用XmlHttpRequest可以解决这个问题?您可以使用FileReader,在这里查看示例:只需在表单中创建一个隐藏的输入元素。(注意类型) 更新 如果服务器要求在提交的数据中包含参数“filename”,则将

我有一个画布,通过
canvas.toDataURL('image/png')
从中检索图像数据

问题:
希望文件路径为
而不是base64数据

问题:如何借助
将base64图像数据发送到服务器,而不将其保存到本地文件系统

我的解决方法:尝试了隐藏输入
,但服务器需要filename属性


也许用XmlHttpRequest可以解决这个问题?

您可以使用FileReader,在这里查看示例:

只需在表单中创建一个隐藏的输入元素。(注意类型)

更新

如果服务器要求在提交的数据中包含参数“filename”,则将该字符串作为
输入
元素的名称

<input type="hidden" name="filename"/>

我的图像不存在于本地,只存在于内存中。可以吗?我明白了,那么您可以使用XHR(XMLHttpRequest)将数据URL发送到服务器为什么需要将base64映像转换为文件输入?您只需将base64字符串发送到服务器,然后将其转换为图像服务器端。@YeldarKurmangaliyev服务器是第三方,我无法更改它。哦,我明白了。我想,这篇文章可以帮助你:@YeldarKurmangaliyev谢谢!会玩it@YeldarKurmangaliyev那有帮助!非常感谢!!!!您可以创建您的答案,我将接受无法工作的iTunes,因为服务器需要
filename
参数。请看技巧,您可以在输入元素中使用name=“filename”。我已经用这个和XMLHttpRequest方法更新了我的答案。在输入标记中使用name=“filename”比创建一个全新的对象来代替单个元素要容易得多。无论如何——你喜欢的方式。:)如果您的服务器向
返回了错误的请求,那么您在其他地方遇到了问题。我遇到了问题,因为我的base64大于512kb,所以我得到了图像剪切(我的base64约为640kb),我该怎么办?
var imageData = canvas.toDataURL('image/png');
document.getElementsByName("myHiddenField")[0].setAttribute("value", imageData);
<input type="hidden" name="filename"/>
//Prepare data to be sent
var imageData = canvas.toDataURL('image/png');
var params = "filename=" + imageData;

//Initiate the request
var httpRequest = new XMLHttpRequest();            
httpRequest.open('POST', 'test.php', true);

//Send proper headers
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
httpRequest.setRequestHeader("Content-length", params.length);
httpRequest.setRequestHeader("Connection", "close");

//Send your data
httpRequest.send(params);