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

Renomear imagem upada


erickmm

Pergunta

Boas

Estou com um sitema de album de fotos, esta pefeito, faz upload das fotos, grava no banco o endereço da mesma

tudo certo, só que eu gostaria de renomear o nome da imagem

para que outros usuario não façam upload com o mesmo nome, talvez até colocar o id no começo do nome, sei lá

vou portar o codigo se alguém puder me ajudar

segue o codigo

<% Server.ScriptTimeout = 500000
Dim  Form: Set Form = New ASPForm 
%>
<!--#INCLUDE FILE="_upload.asp"-->
<%
Server.ScriptTimeout = 10000
Form.SizeLimit = 10240*1024'10MB
if len(Request.QueryString("UploadID"))>0 then
Form.UploadID = Request.QueryString("UploadID")'{/b}
end if
Const fsCompletted  = 0
If Form.State = fsCompletted Then
'A linha a seguir é onde está setada a pasata para qual será upado os arquivos, se fores usar FSO, acrescente por aqui
Const VirtualFolder = ("fotos")
Dim DestinationPath, virtDestinationPath
DestinationPath = Server.mapPath(VirtualFolder) & "\"
virtDestinationPath = "http://" + Request.ServerVariables("SERVER_NAME") _
+ GetPath(Request.ServerVariables("SCRIPT_NAME") ) _
+ "/" + VirtualFolder + "/"
Dim RS: Set RS = OpenUploadRS
Dim FileField
For Each FileField in Form.Files.Items
if len(FileField.FileName)> 0 then 'File is specified.
Dim DestinationFileName
DestinationFileName = DestinationPath & FileField.FileName
FileField.SaveAs DestinationFileName
'Este comentário fiz questão de colocar, aqui é onde você acrecenta o nome dos campos que estão na sua tabela
RS.AddNew
RS("data") = Form("Desc-" & FileField.Name)
RS("codigo") = Form("Desc-" & FileField.Name)
RS("foto") = FileField.FileName
RS("DestFileName") = VirtualFolder
'...
RS.Update
end if
Next 
'fiz uma mudança aqui para retornar a pagina onde estavamos sem perder a querystring("data")
response.write "<meta http-equiv='refresh' content='0; url=java script:history.go(-1)'/>"
Dim Field: For Each Field in Form.Files.Items
'Response.write "<br>&nbsp;" & Field.FileName
Next
'{b}Save file to the destination
'{/b}
ElseIf Form.State > 10 then
Const fsSizeLimit = &HD
Select case Form.State
case fsSizeLimit: response.write  "<br><Font Color=red>O seu limite de upload é de 10mb (" & Form.TotalBytes & "B) e voc~e exedeu esse limite. (" & Form.SizeLimit & "B)</Font><br>"
case else response.write "<br><Font Color=red>Some form error.</Font><br>"
end Select
End If'Form.State = 0 then
Function OpenUploadRS()
Dim RS  : Set RS = CreateObject("ADODB.Recordset")
'Achei interessante comentar essa parte, pois é aqui que vai o nome da sua tabela, no meu caso era "fotos"
RS.Open "fotos", GetConnection, 2, 2
Set OpenUploadRS = RS
end Function 
Function GetConnection()
dim Conn: Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Conn.open "Data Source=" & Server.MapPath("../../../dados/database.mdb") 
set GetConnection = Conn
end function
Function SplitFileName(FullPath)
Dim Pos, PosF
PosF = 0
For Pos = Len(FullPath) To 1 Step -1
Select Case Mid(FullPath, Pos, 1)
Case ":", "/", "\": PosF = Pos + 1: Pos = 0
End Select
Next
If PosF = 0 Then PosF = 1
SplitFileName = PosF
End Function
Function GetPath(FullPath)
GetPath = left(FullPath, SplitFileName(FullPath)-1)
End Function
Dim UploadID, PostURL
UploadID = Form.NewUploadID
PostURL = Request.ServerVariables("SCRIPT_NAME") & "?UploadID=" & UploadID'{/b}
%>

espero que possam me ajudar

valeu

ate +

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Pelo script não consegui identificar o componente... qual é o nome dele?

Existem inúmeras formas de resolver isso...

*Fazer uma consulta antes de upar que havendo nome retorna um erro ao user solicitando novo nome de arquivo...

*O próprio sistema númerar caso haja arquivos com o mesmo nome, exemplo: teste.jpg, teste(1).jpg, teste(2).jpg... no aspUpload sei que é possível... e certamente deve ser nos outros tb!

*você mesmo criar uma nomenclatura randomica de forma a não repetir... por exemplo o ID que você citou... tb é bem simples de fazer... faça uma consulta ao bd selecionando o último arquivo (maior numero do campo autonum) e some a ele + 1 acresentando o resultado antes ou depois do nome do arquivo...

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

O próprio sistema númera caso haja arquivos com o mesmo nome?

como fazer isso?

acho que é algo por aqui que tem q mudar, mais não sei oque

Eu tambem não sei o nome desse componente, mais deve ser o SaFileUp

porque é o que roda na locaweb onde o site esta hospedado e esta rodando

'A linha a seguir é onde está setada a pasata para qual será upado os arquivos, se fores usar FSO, acrescente por aqui
Const VirtualFolder = ("fotos")
Dim DestinationPath, virtDestinationPath
DestinationPath = Server.mapPath(VirtualFolder) & "\"
virtDestinationPath = "http://" + Request.ServerVariables("SERVER_NAME") _
+ GetPath(Request.ServerVariables("SCRIPT_NAME") ) _
+ "/" + VirtualFolder + "/"
Dim RS: Set RS = OpenUploadRS
Dim FileField
For Each FileField in Form.Files.Items
if len(FileField.FileName)> 0 then 'File is specified.
Dim DestinationFileName
DestinationFileName = DestinationPath & FileField.FileName
FileField.SaveAs DestinationFileName

espero que ajude

valeu

Link para o comentário
Compartilhar em outros sites

  • 0

Imaginei que fosse... olha não to familiarizado com esse componente... recomendo procurar por essa informação no proprio site dos desenvolvedores do componente... mande um e-mail pra eles... derepente eles te ajudam...

Ou aguarde... talvés alguém aqui saiba como autonumerar arquivos existentes neste componente aí!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Mas che... tb podes dar uma procuradinha no google... ou entrar em contato com os desenvolvedores como lhe sugeri antes... olha só... acabei de fazer isso... e em 3 min descobri a resposta que você queria...

http://www.google.com.br/search?hl=pt-BR&a...mp;aq=f&o que=

http://site.locaweb.com.br/suporte/faq/faq...oCategoria=4750

desenvolvedor: http://softartisans.stores.yahoo.net/

documentação copleta: http://support.softartisans.com/default.aspx

eles fornecem inclusive exemplos exatamente do que você precisa:

<%@ Language=VBScript %>
<% Option Explicit %>

<HTML>
<HEAD>
<TITLE>SoftArtisans FileUp OverWrite Files Sample</TITLE>
</HEAD>
<BODY>
<p>
<img src="/safileupsamples/fileupse.gif" alt="SoftArtisans FileUp">
</p>

<%
'-----------------------------------------------------------------------
'--- FileUp OverWrite Files Sample
'--- 
'--- You can direct FileUp to handle uploads of existing files
'--- in several ways.  This sample demonstrates how.
'---
'--- Copyright (c) 2003 SoftArtisans, Inc.
'--- Mail: info@softartisans.com   http://www.softartisans.com
'-----------------------------------------------------------------------

    '--- Declarations
    Dim oFileUp
    Dim strExistAction

    '--- Instantiate the FileUp object
    Set oFileUp = Server.CreateObject("SoftArtisans.FileUp")

    '--- Set the Path property to the location you wish to
    '--- temporarily cache the incoming file before saving
    '--- Note: This property must be set immediately after
    '--- instantiating the FileUp object
    oFileUp.Path = Server.MapPath(Application("vroot") & "/temp")

    '--- Get the option we chose from the QueryString
    '--- CreateNewFile and OverWriteFiles need to be set before referencing
    '--- any form elements.  Because of this, we need to put the option
    '--- in the QueryString
    strExistAction = Request.QueryString("ExistAction")
    Response.Write "You chose this option: <B>" & strExistAction & "</B><HR NOSHADE>"

    '--- Set appropriate FileUp properties depending on your choice
    '--- Defaults:
    '---  CreateNewFile = False
    '---  OverWriteFiles = True
    '--- Therefore, the default behavior is to overwrite existing files
    '--- without raising an error
    
    Select Case strExistAction

        '--- A unique filename will be generated for the file
        '--- to be sure it's not overwritten
        Case "AutoRename"
            oFileUp.CreateNewFile = True
            oFileUp.OverWriteFiles = False

        '--- A component error will occur
        '--- use On Error Resume Next to handle this
        Case "ThrowError"
            oFileUp.CreateNewFile = False
            oFileUp.OverWriteFiles = False
        
        '--- This is the default behavior even if these
        '--- properties are not set.
        Case "Overwrite"
            oFileUp.CreateNewFile = False
            oFileUp.OverWriteFiles = True
    End Select

    '--- Check to be sure there was a file selected in the form
    '--- If so, continue processing
    If IsObject(oFileUp.Form("myFile")) Then
        If Not oFileUp.Form("myFile").IsEmpty Then
        
            On Error Resume Next
                oFileUp.Form("myFile").Save
                If Err.Number <> 0 Then
                    Response.Write "<B>ERROR:</B> An error occurred while saving, which is being handled " & _
                                    "by <i>On Error Resume Next</i>.<BR>"
                    Response.Write "<B>Error description:</B> " & Err.Description
                    Response.End
                End If
            On Error Goto 0

            '--- The file is saved, display a confirmation message
            Response.Write "<B>File saved successfully on the server as:</B><BR>"

            '--- The ServerName() property is the full path of the file
            '--- where it was saved on the server
            Response.Write oFileUp.Form("myFile").ServerName
            
        Else
            Response.Write "Error: There was no file submitted for upload."
        End If
    Else
        Response.Write "The referenced field does not exist or is not of type=""file"""
    End If

    '--- Dereference FileUp
    Set oFileUp = Nothing
%>


</BODY>
</HTML>

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Vixe não entendi nada...rs

to procurando algo aqui, vamos ver se acho

mais ta dificil, queria apenas renomear a imagem com o id do usuario a data e hora

mais vamos ver se acho

valeu

olha oque eu achei

Set dir = CreateObject("Scripting.FileSystemObject") 'Cria o FSO
if dir.FileExists(caminho_e_nome_do arquivo) then
end if
Para renomear, use:
dir.MoveFile caminho/nomeantigo, caminho/nomenovo

só não entendi onde devo mudar para colocar o id do usuario no começo do nome da imagem

e nem onde coloco no meu codigo

ve se você entende

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,5k
×
×
  • Criar Novo...