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.
SYMPTOMS
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."
CAUSE
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
RESOLUTION
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
  1. Start Registry Editor (Regedt32.exe).
  2. Locate and then click the following registry key:
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
  3. On the Edit menu, click Add Value, and then add the following registry value:
    Value name: SocketSendBufferLength
    Data type: REG_DWORD
    Radix: Decimal
    Value data: Buffer size that you want (in bytes)
    Buffer size value options:
    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
    NoteBuffers sizes larger than those specified here are not supported by Microsoft.
  4. Quit Registry Editor.
Make sure that you test each value, starting with a 16-KB buffer. When the upload performance becomes acceptable, select the corresponding buffer value.
STATUS
This behavior is by design.
MORE INFORMATION
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:For additional information about Winsock Send Buffer behavior, click the article number below to view the article in the Microsoft Knowledge Base:
214397 INFO: Design Issues - Sending Data Segments Over TCP w/Winsock
Properties

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
Feedback