Javascript 上传照片

Javascript 上传照片,javascript,security,file-upload,Javascript,Security,File Upload,我的问题是关于上传照片到网络服务器 我最近在facebook上传照片时发现,它可以上传(默认情况下是这样)比我们要求的更小的照片 现在,我可以考虑上传一张全尺寸的照片,并在它到达服务器时进行压缩 但facebook如何在上传图片时调整图片大小。 是否有请求头(我想没有)要求浏览器上传特定大小的图像并处理文件中的exif/jpeg数据。 如果没有,一些插件/Flash/Javascript必须从我们的系统中读取文件/图像web标准真的允许从用户系统读取文件吗? 请告知 问候, Mayank网站/w

我的问题是关于上传照片到网络服务器

我最近在facebook上传照片时发现,它可以上传(默认情况下是这样)比我们要求的更小的照片

现在,我可以考虑上传一张全尺寸的照片,并在它到达服务器时进行压缩

但facebook如何在上传图片时调整图片大小。
是否有请求头(我想没有)要求浏览器上传特定大小的图像并处理文件中的exif/jpeg数据。

如果没有,一些插件/Flash/Javascript必须从我们的系统中读取文件/图像<代码>web标准真的允许从用户系统读取文件吗?

请告知

问候,

Mayank

网站/webserver无法对图像执行任何操作,除非将其上载并保存到目标目录中。它必须接收全尺寸图像,然后将其重新调整为所需大小[生成缩略图等]。没有您描述的请求头

Web标准不允许从用户硬盘读取文件。他们允许的事情是从硬盘中选择文件,然后发送到服务器——主动权在客户端,而不是服务器端

你还有什么想知道的吗

更新

见此:


正如我所说,没有外部机制,我们什么都做不了。但当然,如果我们考虑到Flash、Google Gears等,一切都是可能的。

网站/webserver无法对图像进行任何处理,除非将其上载并保存到目标目录中。它必须接收全尺寸图像,然后将其重新调整为所需大小[生成缩略图等]。没有您描述的请求头

Web标准不允许从用户硬盘读取文件。他们允许的事情是从硬盘中选择文件,然后发送到服务器——主动权在客户端,而不是服务器端

你还有什么想知道的吗

更新

见此:

正如我所说,没有外部机制,我们什么都做不了。但当然,如果我们考虑到Flash、Google Gears等,一切都是可能的。

现在HTML5已经成为可能 目前并非所有的浏览器都支持它,但是HTML5中有一些功能可以在图像通过网络发送之前调整图像大小

摘自上述链接:

调整图像大小 人们习惯于上传图片 直接从他们的照相机上。这给 高分辨率和极重 (数兆字节)文件。取决于 根据使用情况,您可能需要调整此类 图像。一个超级简单的诀窍是 只需一块小帆布(800×600 例如)和绘制图像标记 进入这个画布。当然,你会的 必须更新画布尺寸 以保持图像的比例

现在有了HTML5就可以了 目前并非所有的浏览器都支持它,但是HTML5中有一些功能可以在图像通过网络发送之前调整图像大小

摘自上述链接:

调整图像大小 人们习惯于上传图片 直接从他们的照相机上。这给 高分辨率和极重 (数兆字节)文件。取决于 根据使用情况,您可能需要调整此类 图像。一个超级简单的诀窍是 只需一块小帆布(800×600 例如)和绘制图像标记 进入这个画布。当然,你会的 必须更新画布尺寸 以保持图像的比例


@你确定吗?FB上载源图像,然后调整图像大小以满足其要求。否则他们就不允许你下载高质量的原始版本image@mayank,可能上传程序会压缩它,但我不认为它会降低分辨率。@JohnP:FB中有一个选项,如果用户检查它,FB会上传完整的图像。这是用Flash AFAICT完成的。在没有闪存的新Linux安装上,它不起作用。那么闪存会被视为对安全性的危害吗?@mayank你确定吗?FB上载源图像,然后调整图像大小以满足其要求。否则他们就不允许你下载高质量的原始版本image@mayank,可能上传程序会压缩它,但我不认为它会降低分辨率。@JohnP:FB中有一个选项,如果用户检查它,FB会上传完整的图像。这是用Flash AFAICT完成的。在没有Flash的新Linux安装上,它不起作用。那么Flash会被视为对安全性的妥协吗?Facebook有一个选项,他们说,上传照片的时间会多花10倍。默认情况下,它上载低分辨率图像,而上载全尺寸图像所需时间的十分之一。我的问题是他们如何从客户那里做到这一点side@Thomasz:别忘了Java图像上传小程序。。。它们已经灭绝了,但值得一提。Java小程序需要特殊权限,并询问用户是否“信任”发布者。一旦获得批准,他们可以阅读文件系统上的任何内容,客户端图像压缩可以通过Java小应用程序完成。是的,它的obselete和Flash似乎已经取代了Java小应用程序。Facebook有一个选项,他们说,上传照片需要10倍以上的时间。默认情况下,它上载低分辨率图像,而上载全尺寸图像所需时间的十分之一。我的问题是他们如何从客户那里做到这一点side@Thomasz:别忘了Java图像上传小程序。。。它们已经灭绝了,但值得一提。Java小程序需要特殊权限,并询问用户是否“信任”发布者。一旦获得批准,他们可以阅读文件系统上的任何内容,客户端图像压缩可以通过Java小程序来完成。是的,它似乎已经取代了Java小程序。
var MAX_WIDTH = 800;
var MAX_HEIGHT = 600;
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;
  }
}
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height)