| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
philips Capt

Registrado: 16 Nov 2005Mensajes: 154
|
Publicado: Jue 23 May, 2013 12:22 pm Asunto: Imposible descargar archivos de mas de 100Mb. con Indy 11 |
|
|
Cuando intento descargarme un archivo de mas de 100Mb. con Get(), me salta una excepción
Estoy usando XE, primera versión
Parece que Indy asigna internamente el contenido de Get() a un TMemoryString y cuando el archivo supera los 100Mb. salta una excepción
Alguien podria decirme si en el nuevo XE3 con su nuevo Indy se ha solventado este problema ?
O me toca explorar otras opciones para reemplazar a Indy
Saludos |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 23 May, 2013 6:50 pm Asunto: |
|
|
He hecho esta pequeña prueba con un archivo de 266MB:
| Código: | //! Añadimos la cabecera: #include<memory>
std::unique_ptr<TFileStream> fs(new TFileStream("d:\\PC51.wmv", fmCreate));
IdHTTP1->Get("http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/PC51.wmv", fs.get());
ShowMessage("finalizado"); |
El video de la prueba es: Windows 7: Best Practices for Developing for Windows Standard User
http://channel9.msdn.com/Blogs/pdc2008/PC51
Con las siguientes versiones:
BCB6 + Indy 9.0.14
CB2010 + Indy 10.5.5 (la que trae de fábrica)
CBXE3 + Indy 10.5.9 (la que trae de fábrica)
En todas se ha descargado correctamente. Luego he probado a descargar algo un poco más grande, 785MB:
http://gb.releases.ubuntu.com/raring/ubuntu-13.04-desktop-amd64.iso
También se descargó perfectamente.
Habría que ver si te ocurre con alguna web específica, o si te ocurre con todas el código que estas usando para reproducir el problema. |
|
| Volver arriba |
|
 |
philips Capt

Registrado: 16 Nov 2005Mensajes: 154
|
Publicado: Vie 24 May, 2013 9:18 am Asunto: |
|
|
Gracias Leo por tu respuesta
Disculpa, pero con mi pregunta se me ha ido la pinza y no es la función Get la que uso, si no Post
Te pongo un trozo de código para muestra
Saludos
//_______________
/*
SERVER_ADDRESS: URL String
*/
TMemoryStream * Receive = new TMemoryStream();
TIdMultiPartFormDataStream *params = new TIdMultiPartFormDataStream;
...
params->AddObject(L"data", params->RequestContentType, L"", data, L"file");
IdHTTP->Post(SERVER_ADDRESS, params, Receive); // Exception when large file size (> 100 MB)
//_________________ |
|
| Volver arriba |
|
 |
|