boa tarde a todos, Fiz um rotina de upload usando o perl juntamente com o progress. Meu código em perl roda mas o arquivo enviado não vai para o local determinado no servidor. Postei abaixo, e se alguém souber o que pode ser eu agradeço: # SCRIPT DE UPLOAD DE ARQUIVOS - VERSAO WINDOWS #----------------------------- # Inicio das configuracoes # # $dir_upload = diretorio de upload de arquivos # $dir_paginas = diretorio de paginas de resposta (ex: sucesso.html e erro.html) # # Atencao: Colocar o caminho completo, lembrando sempre de substituir "\" por "\\" # # $dir_upload = "c:\\Inetpub\\wwwroot\\upload\\arquivos_sisconum"; $dir_paginas = "c:\\Inetpub\\wwwroot\\upload"; # # Fim das configuracoes #----------------------------- use CGI; $cgi = new CGI; #----------------------------- # Variaveis do Browser # OBS: $arqst = arquivo na estacao cliente # $arqsrv = arquivo no servidor #----------------------------- $arqst = $cgi->param("caminhonomearquivoupload"); $pg_sucesso = $cgi->param("pg_sucesso"); $pg_erro = $cgi->param("pg_erro"); #----------------------------- #---------------------------------- # Pagina padrao de erro/sucesso #---------------------------------- sub mensagem { my ($pg_resposta,$status)=@_; # Exibe pagina em disco / mensagem padrao if ($pg_resposta) { open (MSG, "$dir_paginas\\$pg_resposta"); @mensagem = <MSG>; close(MSG); foreach(@mensagem) { $mensagem.= $_; } } else { $mensagem = "<html><head><title>Upload de Arquivos</title></head>\n"; $mensagem.= "<body bgcolor=\"#FFFFFF\" text=\"#000000\">\n"; $mensagem.= "<h2>Upload de Arquivos</h2>\n"; if ($status eq "sucesso") { $mensagem.= "Sucesso ao fazer upload de arquivo.\n"; } else { $mensagem.= "Erro ao fazer upload de arquivo.\n"; } $mensagem.= "</body></html>\n"; } print"Content-type: text/html\n\n"; print"$mensagem"; } # Checando arquivo if (!$arqst) { &mensagem($pg_erro,"erro"); exit; } # Colocando arquivo em buffer para gravacao em disco $arq = ""; while ($bytesread=read($arqst,$buffer,1024)) { $arq.=$buffer; } # Preparando o nome do arquivo no servidor # Para formato DOS e Unix $arqsrv = $arqst; $arqsrv =~ s/.*\\//i; $arqsrv =~ s/.*\///i; # Gravando o arquivo em disco open(FILE,">$dir_upload\\$arqsrv"); print FILE $arq; close (FILE); # Exibindo mensagem de sucesso &mensagem($pg_sucesso,"sucesso");
Se estiver usando IIS,veja se o usuário da web (usuário do IIS) tem permissão de escrita no diretório em questão.
Obrigado, mas eu dei permissão e o programa roda mas não grava, seria alguma permissão diferente a do diretório virtual. Estou usando o IIS sim, mas não dá certo. Agradeço se vc tiver alguma nova sugestão.
Permissão que eu digo é para essas pastas, $dir_upload = "c:\\Inetpub\\wwwroot\\upload\\arquivos_sisconum"; $dir_paginas = "c:\\Inetpub\\wwwroot\\upload"; Permissão pro usuário do IIS
Agnaldo, Se você está usando o IIS, porque está quebrando a cabeça com Perl? Tem algum requisito? Na minha experiência, qualquer coisa ligada a Perl é mais trabalho do que realização...
Bom, acho que voce deve dizer isso para o Antenor então. Ele que esta tentando usar. Eu estou apenas tentando ajudar respondendo o que ele postou.. E, apenas para cometário, não tenho nada contra Perl, muito pelo contrário. Uso-o de maneira eficiente em várias coisas.