
pedrosbc
Membros-
Total de itens
9 -
Registro em
-
Última visita
Tudo que pedrosbc postou
-
Bom dia Rafael, e aí conseguiu descobrir qual é o problema com este script? Fico no aguardo Abs
-
Fiz este teste que você me pediu 2 vezes(no primeiro declarei a variavel:Dim para; na segunda não declarei a variavel) e nas duas vezes deu o mesmo erro... estou colocando o código como está agora. Primeiro a página onde tem o formulário: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <!--#include file="aspupload.asp" --> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <!--[if IE]> <link href="css/ie.css" rel="stylesheet" type="text/css" /> <!--[else]> <link rel="stylesheet" href="css/ns.css" type="text/css" /> <![endif]--> <script language="JavaScript"> <!-- self.name = "contato"; function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> </script> </head> <body> <div id="cabecalhoesquerda"></div><div id="cabecalho"></div> <div id="clear"></div> <div id="esquerda"><a href="http://www.meudominio.com.br/index.html" target="_self">VOLTAR</a></div> <form method="post" enctype="multipart/form-data" name="form1" action="enviar.asp"> <div id="tudo"> <div id="um"> <label><strong>Nome:</strong> <input type="text" name="camponome" id="camponome"> </label> <br /> <label><strong>E-mail:</strong> <input type="text" name="campoemail" id="campoemail" > </label> <br /> <label><strong>Anexo:</strong> <a href="java script:MM_openBrWindow('anexos.html','anexos','width=640,height=150')">Anexar arquivo</a><br /> <% if request.cookies("meusite").HasKeys then if request.cookies("meusite")("Arquivo1") <> "" then response.write ""&request.cookies("meusite")("Arquivo1")&", " else response.write "" end if else response.write "" end if %> </label> </div> <div id="dois"> <input type="submit" value="" id="submit" /> </div> <div id="tres"> <label><strong>Mensagem:</strong><br /> <textarea name="campomensagem" id="mensagem" cols="74" rows="7"></textarea> </label> </div><br> <div class="clear"></div><br> </div><br> </form><br> <div id="peesquerda"></div> <div id="pe"></div> </body> </html> O arquivo enviar.asp é o seguinte: <% Dim campoemail Dim camponome Dim campomensagem campoemail = request.form("campoemail") camponome = request.form("camponome") campomensagem = request.form("campomensagem") Set cdoConfig = Server.CreateObject("CDO.Configuration") cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.meudominio.com.br" cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30 cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "meunome@meudominio.com.br" cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "minhasenha" cdoConfig.Fields.update Set cdoMessage = Server.CreateObject("CDO.Message") Set cdoMessage.Configuration = cdoConfig cdoMessage.From = campoemail cdoMessage.To = "contato@meudominio.com.br" cdoMessage.Subject = "Contato pelo site" strBody = "Dados" & vbCrLf & vbCrLf & _ "Nome:"& request.form("camponome")& vbCrLf & _ "E-Mail:"& request.form("campoemail")& vbCrLf & _ "Mensagem:"& request.form("campomensagem") strBody = strBody & "." cdoMessage.TextBody = strBody cdoMessage.Send Set cdoMessage = Nothing Set cdoConfig = Nothing Response.write "<html><head><link rel='stylesheet' href='css/ie.css' /></head><body>" response.write "<font color='white'>" response.write campoemail&"<br>" response.write camponome&"<br>" response.write para&"<br>" response.write ""&request.form("camponome")&"<br>" response.write ""&request.form("campoemail")&"<br>" Response.write "<H1>E-mail enviado com Sucesso! Aguarde em breve entraremos em contato.</H1><br><br>" response.write "<meta http-equiv='refresh' content='5; url=http://www.meudominio.com.br/contato.asp'/>" %> E por último o arquivo aspupload.asp é o seguinte: <% Set Upload = Server.CreateObject("Persits.Upload") Upload.IgnoreNoPost = True Count = Upload.Save("e:\minha_pasta_no_servidor") For Each File in Upload.Files response.cookies("meusite")(File.Name)=File.FileName response.write "<br>" Next %>
-
Se tirar esta linha que você disse no ie aparece HTTP 500 Erro interno do servidor, e no firefox aparece: CDO.Message.1 error '8004020d' At least one of the From or Sender fields is required, and neither was found. /enviar.asp, line 71 Porém neste erro que aparece no firefox diz que tanto o campo "para", quanto o campo "de" não foram encontrados. O arquivo enviar.asp não possui 71 linhas, somente 51...quanto aos campos que são indicados no erro estes se encontram nas linha 24 e 25 respectivamente, as quais estou colocando abaixo: cdoMessage.From = ""&request.form("campoemail")&"" cdoMessage.To = "meuemail@meudominio.com.br" Mas além desta maneira que foi escrito já tentei também as seguintes maneiras: cdoMessage.From = request.form("campoemail") cdoMessage.To = "meuemail@meudominio.com.br" ou ainda: cdoMessage.From = request("campoemail") cdMessage.To = "meuemail@meudominio.com.br" bem como: campoemail = request.form("campoemail") cdoMessage.From = campoemail cdoMessage.To = "meuemail@meudominio.com.br" e em qualquer uma destas tentativas o erro foi o mesmo... Pelo o que entendí o valor dos campos não estão sendo passados pelo request.form(), como posso então resolver este problema, Rafael?
-
Pois é Rafael, o enctype do meu formulário está setado para multipart/form-data...o método de envio das informações do formulário é o POST e já verifiquei trocentas vezes os nomes das variáveis e garanto que são as mesmas. Já reiniciei o pool de aplicações do meu servidor para ver se poderia ser isso, mas o problema persiste...mas mesmo assim valeu pela ajuda Abs
-
Desculpe Raphael...me enganei era CODE mesmo...agora quanto as variáveis, adicionei as seguintes linhas no arquivo enviar.asp: response.write campoemail&"<br>" response.write camponome&"<br>" response.write ""&request.form("camponome")&"<br>" response.write ""&request.form("campoemail")&"<br>" Antes da mensagem "Seu e-mail foi enviado com sucesso! Em breve entraremos em contato. , com a intenção de escrever na tela o que está sendo passado através do formulário e realmente não está mostrando nada na tela somente os <br>, vou reiniciar o pool de aplicações do servidor para ver se resolve este problema...mas por enquanto continuo na mesma sem resolver o problema, o + engraçado é que este arquivo enviar.asp, até semana passada enviava o e-mail, para isso bastava não adicionar nenhum arquivo em anexo, mas agora nem enviar o conteúdo dos inputs text ele está enviando...vai ver é por isso que um tal sr Gates anda tão milhonário, vendendo gato por lebre...:P Se você ainda puder me dar alguma outra sugestão eu agradeço... Abs
-
Desculpe não ter usado antes o CITE e o /CITE...bom voltando ao problema, eu tentei sim fazer como você disse, anexando apenas um arquivo, porém ao enviar a mensagem, o arquivo é salvo no servidor e aparece a mensagem do final do script asp do arquivo enviar.asp: E-mail enviado com Sucesso! Aguarde em breve entraremos em contato. O arquivo meuarquivoanexado.ext foi anexado ao e-mail. Em seguida a página é redirecionada para a página contato.asp, porém como já ocorria antes o e-mail não foi enviado, será que você pode me ajudar Rafael? Acredito que tenha algum problema no código para utilizar o componente CDOSys para enviar o e-mail, porém não estou encontrando...
-
Boa tarde, estou com um problema para enviar e-mail com anexo de um formulário utilizando o aspupload para fazer o upload do arquivo no servidor e depois utilizando cookies para anexar o arquivo salvo no e-mail e enviá-lo através do CDOSys, porém não funciona. Consigo fazer o upload do arquivo para o servidor pelo aspupload, até aqui sem problemas, porém quando tento anexar o arquivo ao e-mail e depois enviá-lo, o arquivo não vai, abaixo estão os códigos dos arquivos que estou utilizando: A página contato com o formulário é esta: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <!--#include file="aspupload.asp" --> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <!--[if IE]> <link href="css/ie.css" rel="stylesheet" type="text/css" /> <!--[else]> <link rel="stylesheet" href="css/ns.css" type="text/css" /> <![endif]--> <script language="JavaScript"> <!-- self.name = "contato"; function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> </script> </head> <body> <div id="cabecalhoesquerda"></div><div id="cabecalho"></div> <div id="clear"></div> <div id="esquerda"><a href="http://www.meudominio.com.br/index.html" target="_self">VOLTAR</a></div> <form method="post" enctype="multipart/form-data" name="form1" action="enviar.asp"> <div id="tudo"> <div id="um"> <label><strong>Nome:</strong> <input type="text" name="camponome" id="camponome"> </label> <br /> <label><strong>E-mail:</strong> <input type="text" name="campoemail" id="campoemail" > </label> <br /> <label><strong>Anexo:</strong> <a href="java script:MM_openBrWindow('anexos.html','anexos','width=640,height=280')">Anexar arquivos</a><br /> <% if request.cookies("meusite").HasKeys then if request.cookies("meusite")("Arquivo1") <> "" then response.write ""&request.cookies("meusite")("Arquivo1")&", " else response.write "" end if if request.cookies("meusite")("Arquivo2") <> "" then response.write ""&request.cookies("meusite")("Arquivo2")&", " else response.write "" end if if request.cookies("meusite")("Arquivo3") <> "" then response.write ""&request.cookies("meusite")("Arquivo3")&"<br>" else response.write "" end if if request.cookies("meusite")("Arquivo4") <> "" then response.write ""&request.cookies("meusite")("Arquivo4")&", " else response.write "" end if if request.cookies("meusite")("Arquivo5") <> "" then response.write ""request.cookies("meusite")("Arquivo5")&"<br>" else response.write "" end if else response.write "" end if %> </label> </div> <div id="dois"> <input type="submit" value="" id="submit" /> </div> <div id="tres"> <label><strong>Mensagem:</strong><br /> <textarea name="campomensagem" id="mensagem" cols="74" rows="7"></textarea> </label> </div><br> <div id="opcao"> <p>Ou se preferir <a href="mailto:contato@meudominio.com.br?subject='Contato pelo site'">clique aqui</a>.</p> </div> <br> <div class="clear"></div><br> </div><br> </form><br> <div id="peesquerda"></div> <div id="pe"></div> </div> </body> </html> A página enviar.asp que é a action do meu formulário é o seguinte: <!--#include file="aspupload.asp"--> <% On Error Resume Next Server.ScriptTimeout=5400 Dim camponome Dim campoemail Dim campomensagem Dim Arquivo1 Dim Arquivo2 Dim Arquivo3 Dim Arquivo4 Dim Arquivo5 camponome = Request.Form("camponome") campoemail = Request.Form("campoemail") campomensagem = Request.Form("campomensagem") if request.cookies("meusite")("Arquivo1") <> "" then Arquivo1 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo1") else Arquivo1 = "" end if if request.cookies("meusite")("Arquivo2") <> "" then Arquivo2 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo2") else Arquivo2 = "" end if if request.cookies("meusite")("Arquivo3") <> "" then Arquivo3 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo3") else Arquivo3 = "" end if if request.cookies("meusite")("Arquivo4") <> "" then Arquivo4 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo4") else Arquivo4 = "" end if if request.cookies("meusite")("Arquivo5") <> "" then Arquivo5 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo5") else Arquivo5 = "" end if campoemail=request.form("campoemail") camponome=request.form("camponome") campomensagem=request.form("campomensagem") Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration") objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.meudominio.com.br" objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30 objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "meunome@meudominio.com.br" objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "minhasenha" objCDOSYSCon.Fields.update Set objCDOSYSMail = Server.CreateObject("CDO.Message") Set objCDOSYSMail.Configuration = objCDOSYSCon objCDOSYSMail.From = campoemail objCDOSYSMail.To = "meunome@meudominio.com.br" objCDOSYSMail.Subject = "Contato pelo site" if Arquivo1 <> "" then objCDOSYSMail.AddAttachment Arquivo1 else objCDOSYSMail.AddAttachment end if if Arquivo2 <> "" then objCDOSYSMail.AddAttachment Arquivo2 else objCDOSYSMail.AddAttachment end if if Arquivo3 <> "" then objCDOSYSMail.AddAttachment Arquivo3 else objCDOSYSMail.AddAttachment end if if Arquivo4 <> "" then objCDOSYSMail.AddAttachment Arquivo4 else objCDOSYSMail.AddAttachment end if if Arquivo5 <> "" then objCDOSYSMail.AddAttachment Arquivo5 else objCDOSYSMail.AddAttachment end if strBody = "Dados" & vbCrLf & vbCrLf & _ "Nome: "& camponome & vbCrLf & _ "E-Mail: "& campoemail & vbCrLf & _ "Anexo:"& Arquivo1 & vbCrLf & _ " "& Arquivo2 & vbCrLf & _ " "& Arquivo3 & vbCrLf & _ " "& Arquivo4 & vbCrLf & _ " "& Arquivo5 & vbCrLf & _ "Mensagem: "& campomensagem objCDOSYSMail.TextBody = strBody objCDOSYSMail.fields.update objCDOSYSMail.Send Set objCDOSYSMail = Nothing Set objCDOSYSCon = Nothing 'Set Upload = Nothing response.cookies("meusite")= "" response.cookies("meusite")("Arquivo1")="" response.cookies("meusite")("Arquivo2")="" response.cookies("meusite")("Arquivo3")="" response.cookies("meusite")("Arquivo4")="" response.cookies("meusite")("Arquivo5")="" Response.write "<html><head><link rel='stylesheet' href='css/ie.css' /> Response.write "<H1>E-mail enviado com Sucesso! Aguarde em breve entraremos em contato.</H1><br><br>" if Arquivo1 = "" then response.write "" else Response.write "O arquivo "&Replace(Arquivo1,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>" end if if Arquivo2 = "" then response.write "" else Response.write "O arquivo "&Replace(Arquivo2,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>" end if if Arquivo3 = "" then response.write "" else Response.write "O arquivo "&Replace(Arquivo3,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>" end if if Arquivo4 = "" then response.write "" else Response.write "O arquivo "&Replace(Arquivo4,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>" end if if Arquivo4 = "" then response.write "" else Response.write "O arquivo "&Replace(Arquivo4,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>" end if if Arquivo5 = "" then response.write "" else Response.write "O arquivo "&Replace(Arquivo5,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>" end if response.write "<meta http-equiv='refresh' content='5; url=http://www.meudominio.com.br/contato.asp'/>" %> O arquivo aspupload.asp que está presente tanto no arquivo com o formulário, quanto no arquivo enviar.asp como um include é o seguinte: <% Set Upload = Server.CreateObject("Persits.Upload") Upload.IgnoreNoPost = True Count = Upload.Save("e:\minha_pasta_no_servidor") For Each File in Upload.Files response.cookies("meusite")(File.Name)=File.FileName Next %> Será que alguém por aqui pode me ajudar? Desde já agradeço Valeu
-
Oba Rafael, salve... Então meu, o problema foi do fórum, pois o que postei não sei se você reparou foram 4 arquivos, que são respectivamente: contato.asp, upload_funcoes.asp, filepost.asp e upload.asp...não sei o que aconteceu que o fórum juntou os quatro arquivos em um código só...bom vou tentar postar aqui de novo da maneira correta e gostaria que você desse uma olhada, pois postei os scripts certos, nenhum deles tem 191 linhas... Vamos lá, de novo: o arquivo contato.asp é o seguinte: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- #include file = "upload_funcoes.asp" --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <link href="css/teste3.css" rel="stylesheet" type="text/css" /> <script language="JavaScript"> <!-- self.name = "contato"; //--> </script> </head> <body> <div id="cabecalhoesquerda"></div><div id="cabecalho"></div> <div id="clear"></div> <div id="esquerda"></div> <form method="post" enctype="multpart/formdata" name="form1" action="http://www.meudominio.com.br/filepost.asp"> <div id="tudo"> <div id="um"> <label><strong>Nome:</strong> <input type="text" name="camponome" id="camponome"> </label> <br /> <label><strong>E-mail:</strong> <input type="text" name="campoemail" id="campoemail" > </label> <br /> <label><strong>Anexos:</strong> <input type="file" name="anexo" id="campoanexo" ><br /> <% for each x in request.form response.write( x & ": " & request.form( x ) & "<br>" ) next %> </label> </div> <div id="dois"> <input type="submit" value="" id="submit" /> </div> <div id="tres"> <label><strong>Mensagem:</strong><br /> <textarea name="campomensagem" id="mensagem" cols="45" rows="7"></textarea> </label> </div> <div class="clear"></div> </div> </form> <div id="peesquerda"></div><div id="pe"></div> </body> </html> Pois bem, possui um include para carregar, no início o arquivo upload_funcoes.asp que é o seguinte: <% Server.ScriptTimeout = 50000 ' Upload Sem componentes --------------------------------------- Sub BuildUploadRequest(RequestBin) on error resume next Dim sCaminho sCaminho = "e:\home\meudominio\web\anexos\" PosBeg = 1 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13))) boundary = MidB(RequestBin, PosBeg, PosEnd - PosBeg) BoundaryPos = InStrB(1, RequestBin, boundary) Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--"))) Dim UploadControl Set UploadControl = CreateObject("Scripting.Dictionary") Pos = InStrB(BoundaryPos, RequestBin, getByteString("Content-Disposition")) Pos = InStrB(Pos, RequestBin, getByteString("name=")) PosBeg = Pos + 6 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34))) Name = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) PosFile = InStrB(BoundaryPos, RequestBin, getByteString("filename=")) PosBound = InStrB(PosEnd, RequestBin, boundary) If PosFile <> 0 And (PosFile < PosBound) Then PosBeg = PosFile + 10 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34))) FileName = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) UploadControl.Add "FileName", FileName Pos = InStrB(PosEnd, RequestBin, getByteString("Content-Type:")) PosBeg = Pos + 14 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13))) ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) UploadControl.Add "ContentType", ContentType PosBeg = PosEnd + 4 PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2 Value = MidB(RequestBin, PosBeg, PosEnd - PosBeg) Else Pos = InStrB(Pos, RequestBin, getByteString(Chr(13))) PosBeg = Pos + 4 PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2 Value = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) End If UploadControl.Add "Value", Value UploadRequest.Add Name, UploadControl BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary) Loop End Sub Function getByteString(StringStr) For i = 1 To Len(StringStr) Char = Mid(StringStr, i, 1) getByteString = getByteString & ChrB(AscB(Char)) Next End Function Function getString(StringBin) getString = "" For intCount = 1 To LenB(StringBin) getString = getString & Chr(AscB(MidB(StringBin, intCount, 1))) Next End Function ' Fim upload sem Componentes ----------------------------------------- %> O terceiro arquivo, que é a action do meu formulário, trata-se do seguinte arquivo, filepost.asp, que é o seguinte: <!--#include file="upload.asp"--> <% dim x set x = New cla_Upload x.processaupload() x.salvararquivos() set x=nothing response.redirect("http://www.meudominio.com.br/sucesso.html") %> E por último o conteúdo do arquivo upload.asp que está em um include no filepost.asp é o seguinte: <% Class cla_Upload Dim myRequest Dim myRequestFiles Dim tmpRequestFiles dim crlf Dim bJaProcessou Public property get Variaveis(sVariavel) on error resume next if bJaProcessou then Variaveis=myRequest(sVariavel) end if end property Public Sub ProcessaUpload() if bJaProcessou then 'erro exit sub end if 'Altera o tempo de processamento para arquivos grandes Server.ScriptTimeout = 5400 Const ForWriting = 2 Const TristateTrue = -1 'Recupera os dados postados na forma binária PostData = "" Dim biData biData = Request.BinaryRead(Request.TotalBytes) 'Transforma os dados da forma binária para algo mais legível For nIndex = 1 to LenB(biData) PostData = PostData & Chr(AscB(MidB(biData,nIndex,1))) Next 'Recupera o content type para determinar o encoding dos dados ContentType = Request.ServerVariables( _ "HTTP_CONTENT_TYPE") ctArray = Split(ContentType, ";") 'Se o encoding for '"multipart/form-data", então foi feito upload, damos sequencia ao processamento If Trim(ctArray(0)) = "multipart/form-data" Then ErrMsg = "" ' Obtem o boundery, o separador de variáveis utilizado na transmissão bArray = Split(Trim(ctArray(1)), "=") Boundary = Trim(bArray(1)) 'Usa o Boundary para separar todas as variáveis FormData = Split(PostData, Boundary) 'Criação de 3 scripting.dictionary que guardarão as informações Set myRequest = CreateObject("Scripting.Dictionary") Set myRequestFiles = CreateObject("Scripting.Dictionary") FileCount = 1 For x = 0 to UBound(FormData) set tmpRequestFiles=CreateObject("Scripting.Dictionary") 'Faz a localização de dois caracteres crlf que 'Marcam o fim dos metadados do campo e inicio dos dados propriamente InfoEnd = InStr(FormData(x), CrLf & CrLf) If InfoEnd > 0 Then 'Pega as informações sobre o campo varInfo = Mid(FormData(x), 3, InfoEnd - 3) 'Pega o valor do campo, evitando os 2 crlf no inicio 'e o crlf que encontra-se no final varValue = Mid(FormData(x), InfoEnd + 4, _ Len(FormData(x)) - InfoEnd - 7) 'Verifica se trata-se de um arquivo ou de uma variável qualquer If (InStr(varInfo, "filename=") > 0) Then 'Monta um script dictionary com as informações sobre o arquivo tmpRequestFiles.add "nome",GetFieldName(varInfo) tmpRequestFiles.add "conteudo",varValue tmpRequestFiles.add "filename",GetFileName(varInfo) tmpRequestFiles.add "filetype",GetFileType(varInfo) 'Insere o script dictionary montado dentro de outro, contendo 'Todos os arquivos que levaram upload myRequestFiles.ADD "arq" & FileCount,tmpRequestFiles FileCount = FileCount + 1 Else 'É um campo comum myRequest.add GetFieldName(varInfo), varValue End If End If Next Else ErrMsg = "Falha no Encoding Type!" End If bjaprocessou=true End Sub Sub class_Initialize bJaprocessou=false CrLf = Chr(13) & Chr(10) end Sub Public Sub SalvarArquivos() dim icnt icnt=1 do while icnt<=myRequestFiles.Count set tmprequestfiles=myRequestFiles.Item("arq" & icnt) Set lf = server.createObject("Scripting.FileSystemObject") ' para utilizar o nome do arquivo original é necessário 'determinar que tipo de client enviou o arquivo. 'clientes Macintosh enviam apenas o nome do arquivo 'sem path, enquanto clientes Windows 'enviam o caminho inteiro do arquivo selecionado BrowserType = UCase(Request.ServerVariables( "HTTP_USER_AGENT")) If (InStr(BrowserType, "WIN") > 0) Then 'Sendo Windows, obtem o nome do arquivo do final do path sPos = InStrRev(tmprequestfiles("filename"), "\") fName = Mid(tmprequestfiles("filename"), sPos + 1) End If If (InStr(BrowserType, "MAC") > 0) Then 'Neste caso apenas o nome do arquivo foi recebido fName = tmprequestfiles("filename") End If 'se fizer um upload para um caminho diferente, altere aqui FilePath = "e:\home\meudominio\web\anexos\" & fName SavePath = Server.MapPath(FilePath) Set SaveFile = lf.CreateTextFile(SavePath, True) SaveFile.Write(tmprequestfiles("conteudo")) SaveFile.Close icnt=icnt+1 loop End Sub 'Esta função recupera o nome de um campo Private Function GetFieldName(infoStr) sPos = InStr(infoStr, "name=") EndPos = InStr(sPos + 6, infoStr, Chr(34) & ";") If EndPos = 0 Then EndPos = inStr(sPos + 6, infoStr, Chr(34)) End If GetFieldName = Mid(infoStr, sPos + 6, endPos - (sPos + 6)) End Function 'Esta função recupera o filename de um arquivo Private Function GetFileName(infoStr) sPos = InStr(infoStr, "filename=") EndPos = InStr(infoStr, Chr(34) & CrLf) GetFileName = Mid(infoStr, sPos + 10, EndPos - (sPos + 10)) End Function 'Esta função recupera o MIME type de um arquivo Private Function GetFileType(infoStr) sPos = InStr(infoStr, "Content-Type: ") GetFileType = Mid(infoStr, sPos + 14) End Function End Class %> Então Rafael, como já disse o erro que aparece é o seguinte: Microsoft VBScript runtime error '800a01a8' Object required: 'myRequestFiles' /upload.asp, line 191 como está acusando que o problema foi encontrado no arquivo upload.asp, joguei no dreamweaver este arquivo e ele realmente tem 148 linhas, portanto não consigo encontrar o erro... Será que você pode me ajudar? []s
-
Bom dia estou tentando utilizar um script em asp para o upload de arquivos para o servidor sem a utilização de componentes, porém estou recebendo o seguinte erro: Microsoft VBScript runtime error '800a01a8' Object required: 'myRequestFiles' /upload.asp, line 191 O problema é que o arquivo não tem 191 linhas , tem 148 linhas, porém o problema se refere também a um objeto, o myRequestFiles, que está presente no código, porém o que acredito que está acontecendo é que ou o valor do myRequestFiles não está sendo passado corretamente, ou tem algum erro de programação. Bem copiei o código para o upload sem componentes daqui do forum...fiz um copy&paste e o problema persiste, gostaria, se possível alguém aqui me desse uma mão. Bom o formulário parte de contato.asp: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- #include file = "upload_funcoes.asp" --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <link href="css/teste3.css" rel="stylesheet" type="text/css" /> <script language="JavaScript"> <!-- self.name = "contato"; //--> </script> </head> <body> <div id="cabecalhoesquerda"></div><div id="cabecalho"></div> <div id="clear"></div> <div id="esquerda"></div> <form method="post" enctype="multpart/formdata" name="form1" action="http://www.meudominio.com.br/filepost.asp"> <div id="tudo"> <div id="um"> <label><strong>Nome:</strong> <input type="text" name="camponome" id="camponome"> </label> <br /> <label><strong>E-mail:</strong> <input type="text" name="campoemail" id="campoemail" > </label> <br /> <label><strong>Anexos:</strong> <input type="file" name="anexo" id="campoanexo" ><br /> <% for each x in request.form response.write( x & ": " & request.form( x ) & "<br>" ) next %> </label> </div> <div id="dois"> <input type="submit" value="" id="submit" /> </div> <div id="tres"> <label><strong>Mensagem:</strong><br /> <textarea name="campomensagem" id="mensagem" cols="45" rows="7"></textarea> </label> </div> <div class="clear"></div> </div> </form> <div id="peesquerda"></div><div id="pe"></div> </body> </html> O conteúdo do arquivo upload_funcoes.asp do include é: <% Server.ScriptTimeout = 50000 ' Upload Sem componentes --------------------------------------- Sub BuildUploadRequest(RequestBin) on error resume next Dim sCaminho sCaminho = "e:\home\meudominio\web\anexos\" PosBeg = 1 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13))) boundary = MidB(RequestBin, PosBeg, PosEnd - PosBeg) BoundaryPos = InStrB(1, RequestBin, boundary) Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--"))) Dim UploadControl Set UploadControl = CreateObject("Scripting.Dictionary") Pos = InStrB(BoundaryPos, RequestBin, getByteString("Content-Disposition")) Pos = InStrB(Pos, RequestBin, getByteString("name=")) PosBeg = Pos + 6 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34))) Name = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) PosFile = InStrB(BoundaryPos, RequestBin, getByteString("filename=")) PosBound = InStrB(PosEnd, RequestBin, boundary) If PosFile <> 0 And (PosFile < PosBound) Then PosBeg = PosFile + 10 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34))) FileName = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) UploadControl.Add "FileName", FileName Pos = InStrB(PosEnd, RequestBin, getByteString("Content-Type:")) PosBeg = Pos + 14 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13))) ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) UploadControl.Add "ContentType", ContentType PosBeg = PosEnd + 4 PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2 Value = MidB(RequestBin, PosBeg, PosEnd - PosBeg) Else Pos = InStrB(Pos, RequestBin, getByteString(Chr(13))) PosBeg = Pos + 4 PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2 Value = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) End If UploadControl.Add "Value", Value UploadRequest.Add Name, UploadControl BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary) Loop End Sub Function getByteString(StringStr) For i = 1 To Len(StringStr) Char = Mid(StringStr, i, 1) getByteString = getByteString & ChrB(AscB(Char)) Next End Function Function getString(StringBin) getString = "" For intCount = 1 To LenB(StringBin) getString = getString & Chr(AscB(MidB(StringBin, intCount, 1))) Next End Function ' Fim upload sem Componentes ----------------------------------------- %> O conteúdo do arquivo filepost.asp que é para onde o formulário é direcionado após o submit é: <!--#include file="upload.asp"--> <% dim x set x = New cla_Upload x.processaupload() x.salvararquivos() set x=nothing response.redirect("http://www.meudominio.com.br/sucesso.html") %> E por último o conteúdo do arquivo upload.asp do include é: <% Class cla_Upload Dim myRequest Dim myRequestFiles Dim tmpRequestFiles dim crlf Dim bJaProcessou Public property get Variaveis(sVariavel) on error resume next if bJaProcessou then Variaveis=myRequest(sVariavel) end if end property Public Sub ProcessaUpload() if bJaProcessou then 'erro exit sub end if 'Altera o tempo de processamento para arquivos grandes Server.ScriptTimeout = 5400 Const ForWriting = 2 Const TristateTrue = -1 'Recupera os dados postados na forma binária PostData = "" Dim biData biData = Request.BinaryRead(Request.TotalBytes) 'Transforma os dados da forma binária para algo mais legível For nIndex = 1 to LenB(biData) PostData = PostData & Chr(AscB(MidB(biData,nIndex,1))) Next 'Recupera o content type para determinar o encoding dos dados ContentType = Request.ServerVariables( _ "HTTP_CONTENT_TYPE") ctArray = Split(ContentType, ";") 'Se o encoding for '"multipart/form-data", então foi feito upload, damos sequencia ao processamento If Trim(ctArray(0)) = "multipart/form-data" Then ErrMsg = "" ' Obtem o boundery, o separador de variáveis utilizado na transmissão bArray = Split(Trim(ctArray(1)), "=") Boundary = Trim(bArray(1)) 'Usa o Boundary para separar todas as variáveis FormData = Split(PostData, Boundary) 'Criação de 3 scripting.dictionary que guardarão as informações Set myRequest = CreateObject("Scripting.Dictionary") Set myRequestFiles = CreateObject("Scripting.Dictionary") FileCount = 1 For x = 0 to UBound(FormData) set tmpRequestFiles=CreateObject("Scripting.Dictionary") 'Faz a localização de dois caracteres crlf que 'Marcam o fim dos metadados do campo e inicio dos dados propriamente InfoEnd = InStr(FormData(x), CrLf & CrLf) If InfoEnd > 0 Then 'Pega as informações sobre o campo varInfo = Mid(FormData(x), 3, InfoEnd - 3) 'Pega o valor do campo, evitando os 2 crlf no inicio 'e o crlf que encontra-se no final varValue = Mid(FormData(x), InfoEnd + 4, _ Len(FormData(x)) - InfoEnd - 7) 'Verifica se trata-se de um arquivo ou de uma variável qualquer If (InStr(varInfo, "filename=") > 0) Then 'Monta um script dictionary com as informações sobre o arquivo tmpRequestFiles.add "nome",GetFieldName(varInfo) tmpRequestFiles.add "conteudo",varValue tmpRequestFiles.add "filename",GetFileName(varInfo) tmpRequestFiles.add "filetype",GetFileType(varInfo) 'Insere o script dictionary montado dentro de outro, contendo 'Todos os arquivos que levaram upload myRequestFiles.ADD "arq" & FileCount,tmpRequestFiles FileCount = FileCount + 1 Else 'É um campo comum myRequest.add GetFieldName(varInfo), varValue End If End If Next Else ErrMsg = "Falha no Encoding Type!" End If bjaprocessou=true End Sub Sub class_Initialize bJaprocessou=false CrLf = Chr(13) & Chr(10) end Sub Public Sub SalvarArquivos() dim icnt icnt=1 do while icnt<=myRequestFiles.Count set tmprequestfiles=myRequestFiles.Item("arq" & icnt) Set lf = server.createObject("Scripting.FileSystemObject") ' para utilizar o nome do arquivo original é necessário 'determinar que tipo de client enviou o arquivo. 'clientes Macintosh enviam apenas o nome do arquivo 'sem path, enquanto clientes Windows 'enviam o caminho inteiro do arquivo selecionado BrowserType = UCase(Request.ServerVariables( "HTTP_USER_AGENT")) If (InStr(BrowserType, "WIN") > 0) Then 'Sendo Windows, obtem o nome do arquivo do final do path sPos = InStrRev(tmprequestfiles("filename"), "\") fName = Mid(tmprequestfiles("filename"), sPos + 1) End If If (InStr(BrowserType, "MAC") > 0) Then 'Neste caso apenas o nome do arquivo foi recebido fName = tmprequestfiles("filename") End If 'se fizer um upload para um caminho diferente, altere aqui FilePath = "e:\home\meudominio\web\anexos\" & fName SavePath = Server.MapPath(FilePath) Set SaveFile = lf.CreateTextFile(SavePath, True) SaveFile.Write(tmprequestfiles("conteudo")) SaveFile.Close icnt=icnt+1 loop End Sub 'Esta função recupera o nome de um campo Private Function GetFieldName(infoStr) sPos = InStr(infoStr, "name=") EndPos = InStr(sPos + 6, infoStr, Chr(34) & ";") If EndPos = 0 Then EndPos = inStr(sPos + 6, infoStr, Chr(34)) End If GetFieldName = Mid(infoStr, sPos + 6, endPos - (sPos + 6)) End Function 'Esta função recupera o filename de um arquivo Private Function GetFileName(infoStr) sPos = InStr(infoStr, "filename=") EndPos = InStr(infoStr, Chr(34) & CrLf) GetFileName = Mid(infoStr, sPos + 10, EndPos - (sPos + 10)) End Function 'Esta função recupera o MIME type de um arquivo Private Function GetFileType(infoStr) sPos = InStr(infoStr, "Content-Type: ") GetFileType = Mid(infoStr, sPos + 14) End Function End Class %> Eu estava esperando que o arquivo fosse enviado com o anexo, porém como já disse aparece o erro: Microsoft VBScript runtime error '800a01a8' Object required: 'myRequestFiles' /upload.asp, line 191 Será que alguém pode me ajudar? Desde já agradeço