Javascript:使用HTML5调整函数大小
我需要构建一个函数,从参数中获取文件,调整其大小并返回要上载的文件 我已经有了获取文件的代码(使用jQuery file upload),然后我获取文件变量并将其传递给我从中获取的名为resizeImage的方法,但我不知道如何返回我调整大小的文件(我是javascript新手)。所以我可以把它发送到AmazonS3。如果有人想查看代码,请参见: 这是我提出的函数:Javascript:使用HTML5调整函数大小,javascript,jquery,html,image-uploading,Javascript,Jquery,Html,Image Uploading,我需要构建一个函数,从参数中获取文件,调整其大小并返回要上载的文件 我已经有了获取文件的代码(使用jQuery file upload),然后我获取文件变量并将其传递给我从中获取的名为resizeImage的方法,但我不知道如何返回我调整大小的文件(我是javascript新手)。所以我可以把它发送到AmazonS3。如果有人想查看代码,请参见: 这是我提出的函数: function resizeImage(f) { var file = f; var img = docum
function resizeImage(f) {
var file = f;
var img = document.createElement("img");
var reader = new FileReader();
reader.onload = function(e) {img.src = e.target.result}
reader.readAsDataURL(file);
var MAX_WIDTH = 100;
var MAX_HEIGHT = 100;
var width = img.width;
var height = img.height;
if (width > height) {
if (width > MAX_WIDTH) {
height *= MAX_WIDTH / width;
width = MAX_WIDTH;
}
} else {
if (height > MAX_HEIGHT) {
width *= MAX_HEIGHT / height;
height = MAX_HEIGHT;
}
}
var canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, 100, 100);
}
欢迎提出任何建议,谢谢 您不能从客户端执行此操作,因为出于安全原因-浏览器禁止创建文件: 没有办法,除非是一个文本文件,在这种情况下有一些限制 仅限客户端的解决方案,例如:使用:
绕圈子;它适用于文本文件,但IE会有问题,因为它限制了href长度,这可能不适合您的文件
另一种方法是使用flash,例如,将二进制表示形式传递给它
第三个选项是将结果传递给服务器端控制器,该控制器将为您创建并返回图像。使用canvas.toDataURL()方法将画布的二进制图像数据作为base64字符串虚拟文件获取。然后,您可以使用ajax将bindary数据发送到S3,或者将其作为映像下载到用户的本地计算机。您不能单独使用ajax下载映像:您可以将其发送到服务器端控制器,或者使用flash/java小程序进行下载。
<a href="data:application/octet-stream,field1%2Cfield2%0Afoo%2Cbar%0Agoo%2Cgai%0A">CSV</a>