Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fla-maiden

Upload arquivo sem componente + dados adicionais

Recommended Posts

Boa tarde a todos.

 

Peguei um código para fazer upload de arquivos sem componente. Agora, quando precisei e fui usar, descobrí que este código não me permite usar um Request nele. Gostaria que me ajudassem.

 

O problema é assim:

Existe uma página chamada 'noticias.asp' com o seguinte:

 

<FORM method="post" action="upload.asp" enctype="multipart/form-data" id=form1 name=form1>

<P>Imagem:<br>

<INPUT type="file" id=qimg style="WIDTH: 370px; HEIGHT: 20px" name=qimg></P>

 

<INPUT style="WIDTH: 110px; HEIGHT: 22px" type=button onclick="fncValida()" value="Gravar notícia" id=submit1 name=submit1></P>

</form>

 

Eu incluí um campo de texto nesse arquivo:

 

<P>Texto:<br>

<TEXTAREA id=qconteudo style="WIDTH: 370px; HEIGHT: 100px" name=qconteudo cols=22></TEXTAREA></P>

 

o arquivo "upload.asp" contém:

 

<%@ Language=VBScript %>

<%

Dim Contador, Tamanho

Dim ConteudoBinario, ConteudoTexto

Dim Delimitador, Posicao1, Posicao2

Dim ArquivoNome, ArquivoConteudo, PastaDestino

Dim objFSO, objArquivo

 

PastaDestino = Server.MapPath("fig_noticias") & "\"

 

'***** Determina o Tamanho do Conteúdo *****

Tamanho = Request.TotalBytes

'***** Obtém o Conteúdo no Formato Binário *****

ConteudoBinario = Request.BinaryRead(Tamanho)

 

'***** Transforma o Conteúdo Binário em String *****

For Contador = 1 To Tamanho

ConteudoTexto = ConteudoTexto & Chr(AscB(MidB(ConteudoBinario, Contador, 1)))

Next

'***** Determina o Delimitador de Campos *****

Delimitador = Left(ConteudoTexto,InStr(ConteudoTexto, vbCrLf)-1)

 

'***** Percore a String Procurando os Campos *****

'***** Identifica os Arquivos e Grava no Disco *****

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

 

Posicao1 = InStr(ConteudoTexto, Delimitador) + Len(Delimitador)

Do While True

ArquivoNome = ""

Posicao1 = InStr(Posicao1, ConteudoTexto, "filename=")

If Posicao1 = 0 Then

Exit Do

Else

'***** Determina o Nome do Arquivo *****

Posicao1 = Posicao1 + 10

Posicao2 = InStr(Posicao1, ConteudoTexto, """")

For Contador = Posicao2-1 To Posicao1 Step -1

If Mid(ConteudoTexto, Contador, 1) <> "\" Then

ArquivoNome = Mid(ConteudoTexto, Contador, 1) & ArquivoNome

Else

Exit For

End If

Next

 

'***** Determina o Conteúdo do Arquivo *****

Posicao1 = InStr(Posicao1, ConteudoTexto, vbCrLf & vbCrLf) + 4

Posicao2 = InStr(Posicao1, ConteudoTexto, Delimitador) - 2

ArquivoConteudo = Mid(ConteudoTexto, Posicao1, Posicao2-Posicao1+1)

 

'***** Grava o Arquivo *****

If ArquivoNome <> "" Then

Set objArquivo = objFSO.CreateTextFile(PastaDestino & ArquivoNome, True)

objArquivo.WriteLine ArquivoConteudo

objArquivo.Close

Response.Write "Arquivo " & PastaDestino & ArquivoNome & " gravado com sucesso!!!<BR>"

Set objArquivo = Nothing

End If

End If

Loop

Set objFSO = Nothing

%>

 

 

 

 

Como vocês vêem é bem simples. O que ocorre é que eu quero gravar um conteúdo de texto relacionado à imagem no meu banco de dados. Seria uma noticia. Mas ao dar 'Request.Form("qconteudo")' volta um erro dizendo que por usar 'Request.BinaryRead' não posso mais usar o '.Form'.

 

O que eu faço? alguém sabe algum outro jeito mais simples talvez de resolver o problema?

 

valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mudaRequest.Form("qconteudo")praNOMEOBJETODOUPLOAD.Form("qconteudo")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu agradeço pela resposta, mas deu erro.

Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A01B6)

O objeto não dá suporte para a propriedade ou método: 'Form'

Tentei com "objArquivo" e com o "objFSO". Ambos dão o mesmo erro.

 

Entretando, descobrí que nesse exmplo existe uma variável chamada ConteudoTexto que tem a informação que eu quero (em negrito):

-----------------------------7d4c2101004a8 Content-Disposition: form-data; name="qtitulo" teste -----------------------------7d4c2101004a8 Content-Disposition: form-data; name="qconteudo" teste conteudo -----------------------------7d4c2101004a8 Content-Disposition: form-data; name="qid" bcpr -----------------------------7d4c2101004a8 Content-Disposition: form-data; name="qimg"; filename="D:\Bruno\banco de imagens\Brasil.jpg" Content-Type: image/pjpeg ÿØÿà

Bom, o problema agora é a manipulação de string. Não faço a mínima ideia de como tirar o conteúdo que eu quero daí. :(

 

Poderia me ajudar?

 

valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara aqui neste trecho armazen ao que você quer em um arrayFor Contador = 1 To TamanhoArrayCampos(Contador - 1) = Chr(AscB(MidB(ConteudoBinario, Contador, 1)))Nextdepois usa o que você quer a aprtir do array

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.