Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Gestione file in upload

    Ciao a tutti,

    ho due problemi nella gestione dell'upload di un file


    primo problema:

    come posso assegnare un nome "automatico" al file (lo stesso nome del file)?

    nell'esempio sotto indicato il nome viene assegnato da un textbox, io invece vorrei che il nome fosse quello del file caricato

    ho provato con uplTheFile.value ma contiene (giustamente) il nome file con l'intero percorso






    <input id="uplTheFile" type="file" runat="server" NAME="uplTheFile" class="Testo8" size="50">

    <input id="txtServername" type="text" runat="server" NAME="txtServername" class="Testo8">




    string strFileNameOnServer = txtServername.Value;
    try
    {
    string nomefile = uplTheFile.Value;

    uplTheFile.PostedFile.SaveAs(strBaseLocation+strFi leNameOnServer);
    lblErrore.Text = "File " +
    strBaseLocation+strFileNameOnServer+"
    caricato correttamente";

    }



    secondo problema:

    come posso fare in modo che il file venga rinominato nel caso in cui nella cartella ci sia già un file con lo stesso nome

    mettendo un copia_nomefileoriginale.ext (praticamente come fa Windows)



    Grazie per l'aiuto

  2. #2
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Please help me!

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    x il nome potresti agire cosi
    [codice scritto a caso, guarda la logica e correggi eventuali errori]
    codice:
    nome_File = uplTheFile.ToString.Split("\")(uplTheFile.ToString.Split("\").length -1).ToString
    'voglio fare: split dell'indirizzo del nome per \ (cioè le cartelle): prendo l'ultima corrispondenza, ke è il nome del file
    x l'esistenza
    codice:
    if system.io.file.exists(server.mappath(strBaseLocation & nome_file) Then
    uplTheFile.PostedFile. SaveAs(server.mappath(strBaseLocation &  "copia_" & nome_file ))
    end if
    scusa gli errori, scusa se è scritto in vb, scusa se sono le 8.30 del mattino e non capisco un razzo

  4. #4
    Utente di HTML.it L'avatar di fabio309
    Registrato dal
    Oct 2002
    Messaggi
    1,918
    Originariamente inviato da sms
    x il nome potresti agire cosi
    nome_File = uplTheFile.ToString.Split("\")(uplTheFile.ToString .Split("\").length -1).ToString
    'voglio fare: split dell'indirizzo del nome per \ (cioè le cartelle): prendo l'ultima corrispondenza, ke è il nome del file
    [/code]
    a suo tempo ho usato questa riga
    codice:
    nome_file=System.IO.Path.GetFileName(uplTheFile.ToString)

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Originariamente inviato da fabio309
    a suo tempo ho usato questa riga
    codice:
    nome_file=System.IO.Path.GetFileName(uplTheFile.ToString)
    si, si, giustissimo!
    però quando vedi che il framework cerca cosi il filename
    codice:
    Public Shared Function GetFileName(ByVal path As String) As String
          If (Not path Is Nothing) Then
                Path.CheckInvalidPathChars(path)
                Dim num1 As Integer = path.Length
                Dim num2 As Integer = num1
                Do While (--num2 >= 0)
                      Dim ch1 As Char = path.Chars(num2)
                      If (((ch1 = Path.DirectorySeparatorChar) OrElse (ch1 = Path.AltDirectorySeparatorChar)) OrElse (ch1 = Path.VolumeSeparatorChar)) Then
                            Return path.Substring((num2 + 1), ((num1 - num2) - 1))
                      End If
                Loop
          End If
          Return path
    End Function
    ti cadono le braccia (o anche qualcos'altro)

    x farti vedere che non scrivo a vanvera prova questo codice:
    codice:
    <script runat=server>
        Public Function GetFileName(ByVal path As String) As String
            Dim _Array() As String
            _Array = path.Split("\")
            Return _Array(_Array.Length - 1)
        End Function
    
        Private Sub Page_Load()
            Dim i = 0
            Dim StartTime, EndTime As DateTime
            Dim Tempo As TimeSpan
            Dim MilliSecondi As Double
            Dim _Path As String = "C:\Documents And Settings\My User\My Dir\Asp .net\file.aspx"
            
            StartTime = Now
            For i = 1 To 1000000
                System.IO.Path.GetFileName(_Path)
            Next
            EndTime = Now
            Tempo = EndTime.Subtract(StartTime)
            MilliSecondi = Tempo.Ticks / 10000
            Response.Write("Framework
    Millesecondi: " & MilliSecondi & "
    ")
            
            'per scrupolo tutto a nothing
            StartTime = Nothing
            EndTime = Nothing
            MilliSecondi = Nothing
            Tempo = Nothing
            
            StartTime = Now
            For i = 1 To 1000000
                Me.GetFileName(_Path)
            Next
            EndTime = Now
            Tempo = EndTime.Subtract(StartTime)
            MilliSecondi = Tempo.Ticks / 10000
            Response.Write("sms
    Millesecondi: " & MilliSecondi & "
    ")
        End Sub
    </script>
    un risultato
    Framework
    Millesecondi: 6171,875
    sms
    Millesecondi: 3515,625

  6. #6
    Utente di HTML.it L'avatar di fabio309
    Registrato dal
    Oct 2002
    Messaggi
    1,918
    Framework
    Millesecondi: 5187,3672
    sms
    Millesecondi: 2859,3018
    VVoVe:
    grande sms

  7. #7
    Per recuperare il nome del file io uso questa tecnica, è in C# non sò se in VB.NET esista...ma penso di si

    codice:
    nomefile = uplTheFile.PostedFile.FileName.Substring(uplTheFile.PostedFile.FileName.LastIndexOf(@"\")+1);

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Originariamente inviato da deivnet
    Per recuperare il nome del file io uso questa tecnica, è in C# non sò se in VB.NET esista...ma penso di si
    che è sicuramente e nettamente migliore del primo esempio che mi era passato per la testa:
    funzioncina
    codice:
    Public Function GetFileName2(ByVal path As String) As String
            Return path.Substring(path.LastIndexOf("\") + 1)
    End Function
    risultati
    codice:
    Framework
    Millesecondi: 6031,25
    sms
    Millesecondi: 3546,875
    deiv
    Millesecondi: 1609,375

  9. #9
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Grazie per le dettagliatissime risposte,

    per quanto riguarda il problema di rinominare automticamente il file, come posso fare?

    Thanks

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Originariamente inviato da valeria75
    Grazie per le dettagliatissime risposte,

    per quanto riguarda il problema di rinominare automticamente il file, come posso fare?

    Thanks
    la mia soluzione non funziona?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.