繁体   English   中英

上传前限制图片文件大小

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM