上传前限制图像文件大小
Limit image filesize before upload
我正在通过 AJAX 将图像作为 base64 字符串上传到 ASP.NET Web 服务。由于 AJAX/JSON,最大文件大小非常有限(根据我的测试,在 AJAX 请求变得太长之前大约 3MB)。
那么有什么方法可以将给定图像的大小调整为固定文件大小(如 3MB)而不是固定分辨率?
我现在已经了解 canvas
用于调整大小的功能,但设置分辨率 and/or 质量对我来说不仅仅是削减它。
我已经有了一个想法,就是让一个循环在几个周期内调整图像大小,并通过检查 base64 长度来检查近似文件大小,但这似乎既不高效又不够精确。
我知道我可以分块请求,但我也必须更改 WebService,我只是想在万不得已的情况下这样做。
如果您有一个输入文件元素...
<input type="file" id="myFile" />
你可以使用
var sizeInBytes = document.getElementById('myFile').files[0].size
获取文件大小
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>
如果您仍想调整图像大小,您可以在服务器端或客户端执行此操作。
Resize an Image C#
HTML5 Pre-resize images before uploading
此外,还有一些插件可以做到这一点:Image resizing client-side with javascript before upload to the server
服务器端方式更可靠且独立于浏览器,而客户端方式将减少传入服务器的流量。
我正在通过 AJAX 将图像作为 base64 字符串上传到 ASP.NET Web 服务。由于 AJAX/JSON,最大文件大小非常有限(根据我的测试,在 AJAX 请求变得太长之前大约 3MB)。
那么有什么方法可以将给定图像的大小调整为固定文件大小(如 3MB)而不是固定分辨率?
我现在已经了解 canvas
用于调整大小的功能,但设置分辨率 and/or 质量对我来说不仅仅是削减它。
我已经有了一个想法,就是让一个循环在几个周期内调整图像大小,并通过检查 base64 长度来检查近似文件大小,但这似乎既不高效又不够精确。
我知道我可以分块请求,但我也必须更改 WebService,我只是想在万不得已的情况下这样做。
如果您有一个输入文件元素...
<input type="file" id="myFile" />
你可以使用
var sizeInBytes = document.getElementById('myFile').files[0].size
获取文件大小
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>
如果您仍想调整图像大小,您可以在服务器端或客户端执行此操作。
Resize an Image C#
HTML5 Pre-resize images before uploading
此外,还有一些插件可以做到这一点:Image resizing client-side with javascript before upload to the server
服务器端方式更可靠且独立于浏览器,而客户端方式将减少传入服务器的流量。