Javascript 将大图像编码到base64并不';行不通
我使用的是一个简单的表单,它以base64字符串的形式向我的服务器发布一个图像。当我上传小图片(<500KB)时,它非常适合.jpg和.png文件。但当大小为4 mb时,该函数不执行任何操作,甚至不打印警报: HTML:Javascript 将大图像编码到base64并不';行不通,javascript,string,file,post,base64,Javascript,String,File,Post,Base64,我使用的是一个简单的表单,它以base64字符串的形式向我的服务器发布一个图像。当我上传小图片(0){ var fileToLoad=fileselected[0]; var fileReader=newfilereader(); fileReader.onload=函数(fileLoadedEvent){ var srcData=fileloadevent.target.result;//您是否有意尝试执行两个HTTP POST操作?您已经得到了,因此,一旦JS函数返回HTTP表单POST,您
上传
JS:
函数encodeImageFileAsURL(){
var fileselected=document.getElementById(“foto”).files;
var filename=document.getElementById(“foto”).value;
var regex=/.\\\\(.*)/;
var match=regex.exec(文件名);
filename=匹配[1];
如果(fileselected.length>0){
var fileToLoad=fileselected[0];
var fileReader=newfilereader();
fileReader.onload=函数(fileLoadedEvent){
var srcData=fileloadevent.target.result;//您是否有意尝试执行两个HTTP POST操作?您已经得到了
,因此,一旦JS函数返回HTTP表单POST,您就可以执行并退出。如果更改为
,则表单不会执行POST,您应该能够开始调试
此外,我不确定当您尝试发出几兆字节大小的base64编码图像警报时会发生什么
我成功地将你的例子简化为:
function encodeImageFileAsURL() {
var filesSelected = document.getElementById("foto").files;
var file = filesSelected[0];
var reader = new FileReader();
reader.onload = (function (f) {
return function (e) {
alert('***got here***');
};
})(file);
reader.readAsDataURL(file);
}
按钮改为键入按钮,而不是提交。是的,我在后端发布了两种不同的方法,因为我使用的是一个非常“beta”的框架,而且我不知道如何改进它。
function encodeImageFileAsURL() {
var filesSelected = document.getElementById("foto").files;
var filename = document.getElementById("foto").value;
var regex = /.*\\(.*)/;
var match = regex.exec(filename);
filename = match[1];
if (filesSelected.length > 0) {
var fileToLoad = filesSelected[0];
var fileReader = new FileReader();
fileReader.onload = function(fileLoadedEvent) {
var srcData = fileLoadedEvent.target.result; // <--- data: base64
alert(srcData);
$.ajax({
type: 'POST',
url: '/upload/' + filename,
data: srcData,
dataType: "text",
contentType:"text/plain"
});
}
fileReader.readAsDataURL(fileToLoad);
}
}
function encodeImageFileAsURL() {
var filesSelected = document.getElementById("foto").files;
var file = filesSelected[0];
var reader = new FileReader();
reader.onload = (function (f) {
return function (e) {
alert('***got here***');
};
})(file);
reader.readAsDataURL(file);
}