在IIS上传档案的限制上,通常都只要修改PHP.INI或是调整maxAllowedContentLength就可以。
但是,部份情况应用程式没有请求或没办法请求Request.BinaryRead(Request.TotalBytes)这样的命令时,
您会发现无论您的上传极限设定多大,都上传只能大约48K…
原因是IIS上传档案时,会将前 48K 读取到缓冲区中,然后将其传递给应用程序进行处理。
超过 48K 的任何内容都需要透过例如Request.BinaryRead(Request.TotalBytes)这样的命令来获取。
一般情况下应用程式均会使用这类命令来获取剩余资料,但是部分特殊情况(例如封闭式网路),
可能会无法正常传递这类获取剩余档案资料的指令。
因此,透过修改IIS的uploadReadAheadSize来直接取得档案上限容量的方式,是个不错的方法。
修改方式如下:
- 打开 IIS 管理器。
- 选择要配置的网站(也可以在全域中设定)。
- 选择管理器右边功能区最下方的【设定编辑器】。
- 将最上方【区段】的部分选择【system.webServer】的【serverRuntime】。
- 这时就会看到uploadReadAheadSize,在这边就可以修改这个站台的uploadReadAheadSize数值。
- 最下方会提示最大值(有些是2G,有些则是4G),输入您需要的数值(以bytes输入)后点击右上方的【套用】即可生效。