¿Alguien sabe cómo descargar un archivo (sin abrir una página web) y guardarlo en un directorio en Visual Basic 6.0?Descargar archivo - VB6
Respuesta
Si desea hacerlo solo con código (sin Control de transferencia de Internet), VBNet.mvps.org tiene un artículo de instrucciones realmente bueno que utiliza la llamada URLDownloadToFile API.
Desde el artículo:
La API está disponible URLDownloadToFile en todas las versiones del sistema operativo Windows (excepto Win3, WinNT3.x). Al pasar el nombre del archivo remoto y la ruta y el nombre del archivo local, , la API descarga los bits del archivo especificado guardándolos como el nombre de destino . La función trabaja con todos los tipos de archivos de texto sin formato -, imágenes, html, mpg, wav y archivos zip etc. sin modificaciones a la preocupación de rutina o para el archivo de la descarga, ni hay ninguna restricción de tamaño aparente o limitación.
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Const ERROR_SUCCESS As Long = 0
Private Const BINDF_GETNEWESTVERSION As Long = &H10
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
Public Function DownloadFile(sSourceUrl As String, _
sLocalFile As String) As Boolean
//'Download the file. BINDF_GETNEWESTVERSION forces
//'the API to download from the specified source.
//'Passing 0& as dwReserved causes the locally-cached
//'copy to be downloaded, if available. If the API
//'returns ERROR_SUCCESS (0), DownloadFile returns True.
DownloadFile = URLDownloadToFile(0&, _
sSourceUrl, _
sLocalFile, _
BINDF_GETNEWESTVERSION, _
0&) = ERROR_SUCCESS
End Function
FYI - en las pruebas en Windows 7, sería devolver sólo la versión en caché, así que tuve que utilizar la función adicional mencionado en el artículo para desactivarla primero (y que trabajó).
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
Alias "DeleteUrlCacheEntryA" _
(ByVal lpszUrlName As String) As Long
A continuación, simplemente llame a la función anterior con la URL de destino primero, para borrar la caché.
** No necesita llamadas API **, ** no necesita el control de transferencia de Internet **. Solo hazlo de la manera más fácil, usando el código nativo VB6. http://visualstudiomagazine.com/articles/2008/03/27/simple-asynchronous-downloads.aspx – MarkJ
+1, muchas gracias por presentarme estas llamadas API. –
se recomienda usar el Internet Transfer Control
Es necesario utilizar el control de transferencia de Internet, ver http://www.vb-helper.com/howto_get_file_from_web.html para una muestra. Si necesita especificar credenciales, consulte http://support.microsoft.com/kb/173264 también.
No me gusta el control de transferencia de Internet porque es sincrónico. Una vez que inicia una descarga, su aplicación no responde hasta que se descarga el archivo o se produce un error. Hay muchos buenos ejemplos del uso de la DLL WININET para escribir métodos asincrónicos. No es trivial, pero también es muy factible. Here es un ejemplo de stackoverflow.
Es ** trivial hacer descargas asincrónicas en VB6 y no requiere llamadas API. Ver mi respuesta http://stackoverflow.com/questions/1976152/download-file-vb6/1979417#1979417 – MarkJ
No necesita llamadas de API, no necesita el control de transferencia de Internet. Solo hazlo de la manera más fácil, usando el código nativo VB6. Aquí hay un excelente article by Karl Peterson con código de muestra.
Había algo que nunca había visto antes. Tengo una clase completa usando la biblioteca WININET, así que si necesito hacer esto en VB de nuevo, probablemente me quedo con eso, pero siempre es bueno tener alternativas. – jac
Si la propiedad fuera de línea de Internet Explorer es verdadera, esto no funcionará. Obtendrás un error de archivo no encontrado. – kjack
intenta esto:
My.Computer.Network.DownloadFile (*File to download*, *What to save it as*)
Debe darle un nombre de archivo en el lo que para guardarlo como:
Ejemplo:
My.Computer.Network.DownloadFile _
("http://www.cohowinery.com/downloads/WineList.txt", _
"C:\Documents and Settings\All Users\Documents\WineList.txt")
Esto se parece a VB.NET, la pregunta es sobre VB6 –
probar este
Sub DownloadFile(url, path)
Dim objReq
Dim objStream
Set objReq = CreateObject("MSXML2.XMLHTTP")
objReq.Open "GET", url, False
objReq.send
If objReq.Status = 200 Then
Set objStream = CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.Write objReq.ResponseBody
objStream.Position = 0
objStream.SaveToFile path, 2
objStream.Close
Set objStream = Nothing
End If
Set objReq = Nothing
End Sub
más detalles refiera http://smartreferences.blogspot.in
No sé por qué en esta respuesta no hay puntos. Es la única respuesta que realmente funciona sin control. Gracias por la ayuda. –
- 1. ¿Cómo descargar varios archivos en VB6 con barra de progreso?
- 2. FtpWebRequest Descargar archivo
- 3. Griales descargar el archivo
- 4. Descargar archivo único
- 5. grails descargar archivo
- 6. Descargar el archivo con el medidor de progreso en VBA
- 7. Ejecutando aplicaciones VB6 sin haber instalado VB6
- 8. VB6, archivo no existe, ¿Cómo manejo elegantemente?
- 9. Descargar un archivo con VBS
- 10. Descargar archivo dinámico con GWT
- 11. Descargar un archivo en D
- 12. ¿descargar archivo zip usando java?
- 13. Descargar archivo Error 2, FileTransferError.INVALID_URL_ERR
- 14. HTTP Descargar archivo muy grande
- 15. Descargar archivo dentro de WebView
- 16. Descargar un archivo usando Javascript
- 17. Incruste un archivo en el archivo EXE en VB6
- 18. VB6: cómo crear un archivo de registro en VB6 al iniciar la aplicación
- 19. Cómo compilar código VB6 heredado
- 20. Cómo implementar aplicaciones VB6?
- 21. Descargar el archivo url de datos
- 22. Descargar el archivo CSV usando "AJAX"
- 23. Descargar un archivo usando HTTP en WebDriver
- 24. Descargar el archivo pdf de la wikipedia
- 25. Descargar archivo usando descarga parcial (HTTP)
- 26. Descargar archivo Curl con url var
- 27. ¿Cómo descargar un archivo con MSYS?
- 28. Descargar archivo usando Java Common Apache?
- 29. Descargar un archivo mediante programación en Android
- 30. Descargar archivo usando libcurl en C/C++
** Y 81 Qs con solamente 4 votos ??? ** –
No necesita incluir la firma en su publicación - su tarjeta de usuario se agrega automáticamente. Lea [Preguntas frecuentes] (http://stackoverflow.com/faq#signatures) para obtener más detalles. – Artemix