Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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:使用HTML5调整函数大小_Javascript_Jquery_Html_Image Uploading - Fatal编程技术网

Javascript:使用HTML5调整函数大小

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

我需要构建一个函数,从参数中获取文件,调整其大小并返回要上载的文件

我已经有了获取文件的代码(使用jQuery file upload),然后我获取文件变量并将其传递给我从中获取的名为resizeImage的方法,但我不知道如何返回我调整大小的文件(我是javascript新手)。所以我可以把它发送到AmazonS3。如果有人想查看代码,请参见:

这是我提出的函数:

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>