【发布时间】:2013-04-06 03:17:12
【问题描述】:
这是我现在使用 HTML5 File API 上传多张图片的代码片段:
/**
* @param {FileList} files
*/
upload: function(files){
nfiles = files.length;
for (var i = 0; i < nfiles; i++) {
/** @var file File **/
var file = files[i];
var xhr = new XMLHttpRequest();
xhr.open("POST", settings.post_upload, true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.upload.filenumb = i;
xhr.filenumb = i;
xhr.upload.filename = file.name;
var nef = new FormData();
nef.append("folder", settings.folder);
nef.append("file_element", settings.file_elem);
nef.append("udata", settings.user_data);
nef.append(settings.file_elem, file);
xhr.send(nef);
}
}
我想调整图像的大小之前使用画布对象上传,但没有这方面的经验,我不确定如何使用技术更新代码,例如这里描述的那个:HTML5 Pre-resize images before uploading
canvas.toDataURL("image/png"); 将返回一个编码字符串。但我需要发布File 对象。
编辑
您将如何(合理地)为大多数现代浏览器编写跨浏览器功能,以便在上传之前调整文件大小、处理透明的 jpg、png 和 gif:
/**
* @param {File} file
* @param int max_width
* @param int max_height
* @param float compression_ratio
* @returns File
*/
function resize(file, max_width, max_height, compression_ratio){}
【问题讨论】:
-
服务器端调整大小有什么问题?
-
+1 关于调整大小需要/必须在客户端进行的原因。
-
我想他想利用客户端的力量,而不是通过调整图像大小来浪费服务器上的 CPU...
-
@AkashKava 当我大量上传 200 张大图时,可以节省大量传输时间和服务器资源。
-
客户端调整大小更适合地球。为什么要通过互联网传输大量图像,占用互联网资源?就像每个人都认为互联网依靠神奇的小精灵尘埃运行,但事实并非如此,它依靠能源运行并导致二氧化碳排放。 googleblog.blogspot.com/2009/05/energy-and-internet.html。下次编写程序来调整图像大小时,请考虑一下这个星球。
标签: javascript html file-upload html5-canvas