Ir para conteúdo
Fórum Script Brasil
  • 0

Upload sem componente


Guest --Junior --

Pergunta

Guest --Junior --

Olá,

Eu estou usando uma função postada pelo dark0 neste forum pra fazer upload de imagens sem componentes, mas tá funcionando!

Acontece que quando eu faço o Upload da imagem, ela "vai, mas não vai"! A imagem aparece lá ná pasta destino, só que no site ela não aparece, é como se a imagem não existice.

E percebi também que o tamanho da imagem que eu envio fica 0.00 KB

Alguém pode me dizer o que pode ser?!

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!-- #include file = "upload_funcoes.asp" -->
<%
' Chamando Funções, que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando os Dados Digitados ----------------------

.
.
.


' Tipo de arquivo que esta sendo enviado
tipo_foto = UploadRequest.Item("foto").Item("ContentType")
tipo_foto2 = UploadRequest.Item("foto2").Item("ContentType")
tipo_foto3 = UploadRequest.Item("foto3").Item("ContentType")

' Caminho completo dos arquivos enviados
caminho_foto = UploadRequest.Item("foto").Item("FileName")
caminho_foto2 = UploadRequest.Item("foto2").Item("FileName")
caminho_foto3 = UploadRequest.Item("foto3").Item("FileName")

' Nome dos arquivos enviados
nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))
nome_foto2 = Right(caminho_foto2,Len(caminho_foto2)-InstrRev(caminho_foto2,"\"))
nome_foto3 = Right(caminho_foto3,Len(caminho_foto3)-InstrRev(caminho_foto3,"\"))

' Conteudo binario dos arquivos enviados
foto = UploadRequest.Item("foto").Item("Value")
foto2 = UploadRequest.Item("foto2").Item("Value")
foto3 = UploadRequest.Item("foto3").Item("Value")

' pasta onde as imagens serao guardadas
pasta = Server.MapPath("produtos/")
nome_foto = "/"&nome_foto
pasta2 = Server.MapPath("produtos/outras/")
nome_foto2 = "/"&nome_foto2
nome_foto3 = "/"&nome_foto3

' pasta + nome dos arquivos
cfoto = "produtos" + nome_foto
cfoto2 = "produtos/outras" + nome_foto2
cfoto3 = "produtos/outras" + nome_foto3

' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to Len(foto)
MyFile.Write ChrB(AscB(MidB(foto,i,1)))
Next
MyFile.Close
end if

if foto2 <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta2 & nome_foto2)
For i = 1 to Len(foto2)
MyFile.Write ChrB(AscB(MidB(foto2,i,1)))
Next
MyFile.Close
end if

if foto3 <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta2 & nome_foto3)
For i = 1 to Len(foto3)
MyFile.Write ChrB(AscB(MidB(foto3,i,1)))
Next
MyFile.Close
end if

' Redireciona após 5 segundos
response.write "<br><br>você será redirecionado em 5 segundos..<br>"
response.write "<meta http-equiv='refresh' content='5; url=upload_form.asp'/>"
%>

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Será que não estas sendo limitado pelo server? Existem algumas limitações em Nível de IIS que podem efetuar esse tipo de alteração... normalmente existem limitações quanto ao tamanho do arquivo... que por padrão acho que é 200kb! Já experimentou por teste apenas mandar um arquivo bem pequeno e ver o que acontece? Já checou com o seu servidor se tens permissão para executar esse tipo de operação?

Dei uma examinada rápida aqui no seu script e nada me saltou aos olhos... confirme por gentileza essas infs acima... se você tiver permissões e mesmo com um arquivo bem pequeno (menor que 50kb) continuar não funcionando poste seu código completo... desde o form pra eu dar uma olhada mais minuciosa... ok?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Junior --

Olha Rafael eu enviei algumas imagens com o tamanho em disco de 4,00 KB e ainda assim continua o erro. Quanto à permissão do servidor eu não posso de afirmar ainda, mas euquanto eu entro em contato com o suporte você pode analisar os scripts?!:

Ob: se eu alterar as linhas a baixo do arquivo cad_produto2.asp já aparece outro erro e ele nem envia o arquivo:

De:

For i = 1 to Len(foto)

MyFile.Write ChrB(AscB(MidB(foto,i,1)))

Para:

For i = 1 to Len(foto)

MyFile.Write Chr(AscB(MidB(foto,i,1)))

Form - cad_produto.asp

<!--#include file="config.asp"-->
<!-- #include file = "upload_funcoes.asp" -->
<%
if session("usuario") = "" and session("senha") = "" then
response.redirect "admin.asp"
end if
%>
<style type="text/css">
<!--
body,td,th {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #666666;
}
body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
}
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="estilo.css">
<style type="text/css">
<!--
body,td,th {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #333333;
}
.style1 {color: #CC0000}
.style3 {
    color: #006666;
    font-size: 11px;
}
-->
</style><table cellpadding="2" cellspacing="4">
<form name="form1" action="cad_produto2.asp" method="post" enctype="multipart/form-data">
<tr>
<td width="128" align="right">Nome:</td>
<td colspan="3"><input type="text" name="nome" size="51"></td>
</tr>
<tr>
<td align="right">Categoria:</td>
<td colspan="3"><%
set rs = nothing
Set rs = Server.CreateObject("Adodb.Recordset")
    rs.CursorLocation = 3
    rs.CursorType = 2
    rs.open "SELECT nome FROM categoria order by nome ASC", conexao%>
  <select name="categoria" id="categoria" >
    <%Do While rs.eof = false%>
    <option><%=rs("nome")%> </option>
    <%
              rs.movenext
              loop
              rs.Close
              Set rs=nothing
            %>
  </select></td>
</tr>
<tr>
<td align="right">Valor normal R$:</td>
<td width="96"><input name="valor_normal" type="text" id="valor_normal" size="10"></td>
<td width="125" align="left">Valor promocional R$:</td>
<td width="84"><input name="valor_promocao" type="text" id="valor_promocao" size="10" /></td>
</tr>
<tr>
<td align="right" bgcolor="#FFFFFF">Marca:</td>
<td colspan="3"><input type="text" name="marca" id="marca" /></td>
</tr>
<tr>
<td align="right" bgcolor="#f9f9f9"><span class="style1">Imagens:</span></td>
<td colspan="3"><span class="style3">Envie a imagem no tamenho: largura= 278px por altura= 221px</span></td>
</tr>
<tr>
<td align="right">Foto principal:</td>
<td colspan="3"><input type="file" name="foto" size="45"></td>
</tr>
<tr>
<td align="right" bgcolor="#f9f9f9"><span class="style1">Outras imagens:</span></td>
<td colspan="3"><span class="style3">Envie as imagens no tamenho: largura=500px por altura= 550px</span></td>
</tr>
<tr>
<td align="right">Imagem 1:</td>
<td colspan="3"><input type="file" name="foto2" size="45" /></td>
</tr>
<tr>
  <td align="right">Imagem 2:</td>
  <td colspan="3"><input type="file" name="foto3" size="45" /></td>
  </tr>
<tr>
  <td align="right"> </td>
  <td> </td>
  <td> </td>
  <td> </td>
</tr>
<tr>
  <td align="right">Características:</td>
  <td colspan="3" rowspan="4" valign="top"><textarea name="caracteristicas" id="caracteristicas" cols="45" rows="5"></textarea></td>
  </tr>
<tr align="right">
  <td> </td>
  </tr>
<tr align="right">
  <td> </td>
  </tr>
<tr align="right">
  <td> </td>
  </tr>
<tr>
  <td align="right">Ítens Inclusos:</td>
  <td colspan="3" rowspan="4" valign="top"><textarea name="itens_inclusos" id="itens_inclusos" cols="45" rows="5"></textarea></td>
  </tr>
<tr>
  <td> </td>
  </tr>
<tr>
  <td> </td>
  </tr>
<tr>
  <td> </td>
  </tr>
<tr>
  <td align="right">Garantia:</td>
  <td colspan="3"><input name="garantia" type="text" id="garantia" size="60" /></td>
  </tr>
<tr>
  <td align="right">Prazo para entrega: </td>
  <td colspan="3" align="left"><input name="prazo" type="text" id="prazo" size="55" /></td>
  </tr>
<tr>
  <td align="right">Exibir</td>
  <td align="left"><select name="mostrar" id="mostrar" >
    <option>Sim </option>
    <option>Não </option>
    <option>Vitrine </option>
  </select></td>
  <td align="right">Disponibilidade:</td>
  <td align="left"><select name="disponibilidade" id="disponibilidade">
    <option selected="selected">Sim </option>
    <option>Não </option>
  </select></td>
</tr>
<tr>
  <td colspan="4"> </td>
</tr>
<tr>
  <td> </td>
  <td><input type="submit" name="submit" value="cadastrar" /></td>
  <td> </td>
  <td> </td>
</tr>
<tr>
  <td colspan="4"> </td>
</tr>
</form>
</table>
Script que ta dando erro - cad_produto2.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!-- #include file = "upload_funcoes.asp" -->
<%
' Chamando Funções, que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando os Dados Digitados ----------------------
nome = UploadRequest.Item("nome").Item("Value")
categoria = UploadRequest.Item("categoria").Item("Value")
valor_normal = UploadRequest.Item("valor_normal").Item("Value")
valor_normal = Replace(valor_normal, ",", ".")
valor_promocao = UploadRequest.Item("valor_promocao").Item("Value")
valor_promocao = Replace(valor_promocao, ",", ".")
marca = UploadRequest.Item("marca").Item("Value")
mostrar = UploadRequest.Item("mostrar").Item("Value")
data = date()
disponibilidade = UploadRequest.Item("disponibilidade").Item("Value")
prazo = UploadRequest.Item("prazo").Item("Value")
garantia = UploadRequest.Item("garantia").Item("Value")
caracteristicas = Replace(UploadRequest.Item("caracteristicas").Item("Value"), Chr(13), "<br>")
itens_inclusos = Replace(UploadRequest.Item("itens_inclusos").Item("Value"), Chr(13), "<br>")


' Tipo de arquivo que esta sendo enviado
tipo_foto = UploadRequest.Item("foto").Item("ContentType")
tipo_foto2 = UploadRequest.Item("foto2").Item("ContentType")
tipo_foto3 = UploadRequest.Item("foto3").Item("ContentType")

' Caminho completo dos arquivos enviados
caminho_foto = UploadRequest.Item("foto").Item("FileName")
caminho_foto2 = UploadRequest.Item("foto2").Item("FileName")
caminho_foto3 = UploadRequest.Item("foto3").Item("FileName")

' Nome dos arquivos enviados
nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))
nome_foto2 = Right(caminho_foto2,Len(caminho_foto2)-InstrRev(caminho_foto2,"\"))
nome_foto3 = Right(caminho_foto3,Len(caminho_foto3)-InstrRev(caminho_foto3,"\"))

' Conteudo binario dos arquivos enviados
foto = UploadRequest.Item("foto").Item("Value")
foto2 = UploadRequest.Item("foto2").Item("Value")
foto3 = UploadRequest.Item("foto3").Item("Value")

' pasta onde as imagens serao guardadas
pasta = Server.MapPath("produtos/")
nome_foto = "/"&nome_foto
pasta2 = Server.MapPath("produtos/outras/")
nome_foto2 = "/"&nome_foto2
nome_foto3 = "/"&nome_foto3

' pasta + nome dos arquivos
cfoto = "produtos" + nome_foto
cfoto2 = "produtos/outras" + nome_foto2
cfoto3 = "produtos/outras" + nome_foto3

' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to Len(foto)
MyFile.Write ChrB(AscB(MidB(foto,i,1)))
Next
MyFile.Close
end if

if foto2 <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta2 & nome_foto2)
For i = 1 to Len(foto2)
MyFile.Write ChrB(AscB(MidB(foto2,i,1)))
Next
MyFile.Close
end if

if foto3 <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta2 & nome_foto3)
For i = 1 to Len(foto3)
MyFile.Write ChrB(AscB(MidB(foto3,i,1)))
Next
MyFile.Close
end if


' Conecta-se ao Banco de Dados
Set Conexao = Server.CreateObject("ADODB.Connection")
    Conexao.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=s29711_souza;USER=jokaroot;PASSWORD=joka;OPTION=3;" 

' cadastra os dados no banco de dados
sql = "Insert into produto (nome,categoria,caracteristicas,itens_inclusos,marca,valor_normal,valor_promocao,foto_principal,foto1,foto2,mostrar,prazo_entrega,data_cad,disponibilidade,garantia) values ('"& nome &"', '"& categoria &"', '"& caracteristicas &"',  '"& itens_inclusos &"', '"& marca &"', '"& valor_normal &"', '"& valor_promocao &"', '"& cfoto &"', '"& cfoto2 &"', '"& cfoto3 &"', '"& mostrar &"', '"& prazo &"', '"& data &"', '"& disponibilidade &"', '"&garantia&"')"
Conexao.Execute(sql)

' Mostra Mensagem de Confirmação na Tela
Response.write "Dados Cadastrados com Sucesso!"

' Redireciona após 5 segundos
response.write "<br><br>você será redirecionado em 5 segundos..<br>"
response.write "<meta http-equiv='refresh' content='5; url=upload_form.asp'/>"
%>
Função - upload_funcoes.asp
<%
' Upload Sem componentes ---------------------------------------
Sub BuildUploadRequest(RequestBin)
on error resume next

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 -----------------------------------------
%>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...