【问题标题】:handling large file image upload处理大文件图片上传
【发布时间】:2013-07-09 02:18:56
【问题描述】:
在我的 asp.net mvc 4 网站上,我有一个功能,用户可以通过标准文件上传器上传照片。照片被保存到 sql server 中的文件表中。
我最近遇到了一个问题,用户上传非常大的照片,这反过来意味着在渲染图像时会占用带宽。
处理此问题的最佳方法是什么?我可以限制上传文件的大小吗?或者有没有办法在保持质量的同时减少上传的字节数?
【问题讨论】:
标签:
asp.net-mvc
asp.net-mvc-4
file-upload
upload
【解决方案1】:
请参阅this post 了解 maximumRequestLength 配置设置和提供更友好错误的方式
This question and answer may also be helpful
您还可以在上传之前在 javascript 中检查文件的大小,这样即使文件太大也不会发送到服务器(下面的代码会检查大于 15MB 的文件):
if( Math.floor( file.size / 1024 /1024 ) >= 15 )
{
alert( 'File size is greater than maximum allowed. Please make sure that the file is smaller than 15 MegaBytes.' );
return false;
}
或者,在服务器端,您可以在文件上传后使用 WebImage.Resize() 来调整大小。它对上传期间的带宽没有帮助,但它会使后续下载速度更快。缩小图像会导致一些质量损失,但通常它做得很好,只需确保选择保持纵横比的选项以防止失真。
至于在上传之前减少字节,我不知道有任何方法可以在浏览器中执行此操作。您可以提供一个单独的客户端应用程序,该应用程序将在您的应用程序中使用 WebImage.Resize 方法在上传之前为它们调整文件大小。