[英]Limit image filesize before upload
我正在通过AJAX将图像作为base64字符串上传到ASP.NET WebService。 由于使用AJAX / JSON,最大文件大小非常有限(根据我的测试,在AJAX请求变得太长之前大约有3MB)。
那么,有什么方法可以将给定图像的大小调整为固定文件大小(例如3MB),而不是固定分辨率吗?
我现在已经了解了canvas
用于调整大小的功能,但是设置分辨率和/或质量并不只是为了我自己。
我已经有一个想法,就是让循环在几个周期内调整图像的大小,并通过检查base64长度来检查近似文件大小,但这似乎效率不高且不够精确。
我知道我可以对请求进行分块,但是我也必须更改WebService,这只是我的不得已而为之。
JSON文件的大小没有限制。 只要您有足够的资源来处理它,就可以根据需要上传大文件。 4MB的限制是ASP.NET端的默认限制。
您可以将maxRequestLength
属性添加到system.web
- httpRuntime
配置键,它将接受任何大小的文件:
<configuration>
<system.web>
<httpRuntime maxRequestLength = "1048576" />
</system.web>
</configuration>
对于IIS 7+,您还需要添加:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
如果仍要调整图像大小,则可以在服务器端或客户端都执行此操作。
调整图像C#的大小
HTML5在上传前对图片进行预调整大小
另外,有一些插件可以执行此操作:在将图像上传到服务器之前,用javascript调整客户端的图像大小
服务器端方式更可靠且与浏览器无关,而客户端端方式将减少到服务器的传入流量。
如果您有输入文件元素...
<input type="file" id="myFile" />
您可以使用
var sizeInBytes = document.getElementById('myFile').files[0].size
获取文件大小
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.