如何使用基于浏览器的S3上传来验证文件的内容?

时间:2011-12-19 17:54:12

标签: html security validation file-upload amazon-s3

我正在开发一个项目,其中所有用户图片上传都存储在S3上。为了节省带宽并避免上传到我们的服务器,我们使用基于HTML表单的上传(请参阅http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTForms.html)。

验证上传内容的最佳做法是什么,以避免非图像/恶意文件潜入我的帐户并从中提供?有没有办法用S3开箱即用?或者,我是否需要在上传文件后在我的服务器上验证这一点(这几乎会破坏直接转到s3的目的)?

1 个答案:

答案 0 :(得分:0)

如果您使用jquery文件上传与html5 s3表单相结合,您可以使用类似下面的代码来处理上传过程。在文件上传之前,您可以在文件到达服务器之前检查文件类型以及file.size < 50000000的大小。

jQuery ->   
   $('#fileupload').fileupload
     add: (e, data) ->
       types = /(\.|\/)(gif|jpe?g|png)$/i
       file = data.files[0]
       if types.test(file.type) || types.test(file.name)
         data.context = $(tmpl("template-upload", file))
         $('#fileupload').append(data.context)
         data.submit()
       else
         alert("#{file.name} is not a gif, jpeg, or png image file")