file uploads

Тема в разделе "WASM.BEGINNERS", создана пользователем Flasher, 3 окт 2005.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Про InternetWriteFile мало чего есть в инете, но всё-таки нашёл один пример http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=63 30&lngWId=3



    попытался перевести на асму, и вот что получилось:
    Код (Text):
    1. .data
    2. szUrll db "127.0.0.1",0
    3. szAnon db "anonymous",0
    4. szPass db "xz@mila.net",0
    5.  
    6. szFileName db "uploads/test.txt",0
    7. szFileNamel db "C:\masm32\test.txt",0
    8.  
    9. hInternet dd 0
    10. hConnection dd 0
    11. hFile dd 0
    12. hLocalFile dd 0
    13. lFileSize dd 0
    14. hBytes dd 0
    15. Buffer db 2048 dup(0)
    16.  
    17. .code
    18. start:
    19. invoke InternetOpen,$CTA0("Title"),0,0,0,0
    20.  mov hInternet,eax
    21.   .IF eax != 0
    22.    invoke InternetConnect,hInternet,offset szUrll,21,offset szAnon,offset szPass,INTERNET_SERVICE_FTP,INTERNET_FLAG_ASYNC,1
    23.     mov hConnection,eax
    24.      .IF eax != 0
    25.       invoke FtpOpenFile,hConnection,offset szFileName,GENERIC_WRITE,FTP_TRANSFER_TYPE_BINARY,0
    26.        mov hFile,eax
    27.         invoke CreateFile,offset szFileNamel,GENERIC_READ,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
    28.          mov hLocalFile,eax
    29.           .IF eax != INVALID_HANDLE_VALUE
    30.            invoke GetFileSize,hLocalFile,0
    31.             mov lFileSize,eax
    32.              .While lFileSize != 0
    33.               .IF lFileSize < 2048
    34.                mov ecx,dword ptr [lFileSize]
    35.               .ELSE
    36.                mov ecx,2048
    37.               .ENDIF
    38.                sub dword ptr [lFileSize],ecx
    39.                push ecx
    40.                invoke ReadFile,hFile,offset Buffer,ecx,addr hBytes,0
    41.                invoke InternetWriteFile,hFile,offset Buffer,ecx,addr hBytes
    42.                pop ecx
    43.              .ENDW
    44.           .ENDIF
    45.         invoke CloseHandle,hLocalFile
    46.       invoke InternetCloseHandle,hFile
    47.      .ENDIF
    48.    invoke InternetCloseHandle,hConnection
    49.   .ENDIF
    50. invoke InternetCloseHandle,hInternet
    51. invoke ExitProcess,0
    52. end start




    Не могли-бы подсказать, почему не работает этот код ?

    Спасибо!
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Flasher

    А ты не мог бы подсказать, как именно не работает? Что-то не выполняется, какие ошибки?
     
  3. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    IceStudent, дык ошибок нет, вот и проблема :))

    Почти каждую функцию проверяю на error, и нечего, все функции нормально работают, но файл на ftp сервак не перекидывается.

    Может что с буферами намудрил?
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Попробуй FtpPutFile вместо InternetWriteFile.
     
  5. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Flasher

    Почти каждую функцию проверяю на error

    Если хочешь локализовать проблему, то проверяй каждую.

    Конкретно - FtpOpenFile, ReadFile и InternetWriteFile.