在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輸入)後點擊右上方的【套用】即可生效。