user function EnviaArquivo()local cFile := '\ubuntu-11.04-desktop-amd64.iso'Local cHtml := ''Local cBuffer := space(1024)Local hArq Local nTam // cria uma sessão HTTP com um contador de refreshsWEB EXTENDED INIT cHtmlIf httpSession->mycounter = NIL cEcho := 'Inicializando contador' Conout(cEcho) cHtml += cEcho httpSession->mycounter := 1Else httpSession->mycounter++ cEcho := 'Contador em '+str(httpSession->mycounter,3) conout(cEcho)EndifcHtml += cEcho + '
'WEB EXTENDED END // para começar o download acesse o endereço http://localhost/u_enviaarquivo.apw?down=fileif (httpget->down = "file") // libera a sessão HTTP, antes de começar a fazer upload do arquivo // caso o usuário de um refresh na página o conteúdo vai ser atualizado HTTPLeaveSession() // abre o arquivo, seta o cabeçalho HTTP e começa a enviar arquivo hArq := FOpen(cFile) nTam := FSeek(hArq, 0, 2) FSeek(hArq, 0, 0 ) HttpSetPart(.T.) HttpCTType("multipart/form-data") HttpCTDisp('attachment; filename="'+cFile+'"') HttpCTLen(nTam) While FRead(hArq, @cBuffer, 1024)>0 HttpSend(cBuffer) EndDo FClose(hArq)endif Return (cEcho)