在我的 asp.net mvc 4 站点上,我有一个功能,用户可以通过标准文件上传器上传照片。照片被保存到 sql server 中的文件表中。
我最近遇到了一个问题,用户正在上传非常大的照片,这反过来意味着在渲染图像时会占用带宽。
处理这个问题的最佳方法是什么?我可以限制上传文件的大小吗?或者有没有办法在保持质量的同时减少上传的字节数?
在我的 asp.net mvc 4 站点上,我有一个功能,用户可以通过标准文件上传器上传照片。照片被保存到 sql server 中的文件表中。
我最近遇到了一个问题,用户正在上传非常大的照片,这反过来意味着在渲染图像时会占用带宽。
处理这个问题的最佳方法是什么?我可以限制上传文件的大小吗?或者有没有办法在保持质量的同时减少上传的字节数?
有关 maximumRequestLength 配置设置和提供更友好错误的方法,请参阅此帖子
您还可以在上传之前在 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 方法在上传之前为它们调整文件大小。