HTTP File Upload Operation Takes a Long Time to Complete
This article was previously published under Q329781
This article has been archived. It is offered "as is" and will no longer be updated.
When you use the HTTP File Upload feature to upload multi-megabyte files, the upload operation may take a very long time to complete.
Note This issue is documented in Request For Comment (RFC) 1867, "Form-based File Upload in HTML."
This issue occurs because the default Winsock Send buffer is 8 kilobytes (KB), and therefore Internet Explorer supplies the data in 8 KB chunks. On an average network, this equals approximately 80 KB per second (KBps), regardless of network bandwidth.
For additional information, click the article number below to view the article in the Microsoft Knowledge Base:
214397 INFO: Design Issues - Sending Small Data Segments Over TCP w/Winsock
To resolve this issue, configure Internet Explorer to increase the Send buffer when communicating with Winsock. This increases network performance when you use the HTTP File Upload method. To do this, follow these steps.
Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:
322756 How to back up and restore the registry in Windows
- Start Registry Editor (Regedt32.exe).
- Locate and then click the following registry key:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- On the Edit menu, click Add Value, and then add the following registry value:Value name: SocketSendBufferLengthBuffer size value options:
Data type: REG_DWORD
Value data: Buffer size that you want (in bytes)16-KB Buffer = 16384
24-KB Buffer = 24576
32-KB Buffer = 32768
40-KB Buffer = 40960
48-KB Buffer = 49152
56-KB Buffer = 57344
64-KB Buffer = 65536
Note Buffers sizes larger than those specified here are not supported by Microsoft.
- Quit Registry Editor.
This behavior is by design.
When you use the procedure described in the "Resolution" section of this article, any program that uses the WININETAPI HTTPSendRequest function (as documented on the following Microsoft Developer Network (MSDN) Web site) will allocate and request a Winsock Send buffer, as defined by the registry key.
For additional information about the HTTPSendRequest function, visit the following MSDN Web site:
214397 INFO: Design Issues - Sending Data Segments Over TCP w/Winsock
Article ID: 329781 - Last Review: 12/07/2015 12:48:38 - Revision: 3.6
Microsoft Internet Explorer 6.0, Microsoft Internet Explorer 5.5, Microsoft Internet Explorer 5.5, Microsoft Internet Explorer 5.5, Microsoft Internet Explorer 5.5, Microsoft Internet Explorer 5.01
- kbnosurvey kbarchive kbprb KB329781