VB Percorso file universale?

Stato
Discussione chiusa ad ulteriori risposte.

.babushka

Utente Platinum
9 Luglio 2013
2,027
169
452
1,103
Ciao a tutti.
Volevo chiedere ed informarmi, visto che google non riesce ad rispondermi
Un percorso file universale ovvero.


C: \User\Nome utente\Desktop\file.exe

Mi spiego meglio.


Esempio.

Voglio far aprire un programma che sta sul desktop di utenti diversi.
Ovviamente non so il nome dell utente.
Qual'è il percorso universale per win xp/7/8/10 del desktop?
 
Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Console.WriteLine(path & "\file.exe")
 
Non mi da nessun errore,il codice è giusto, ma non funziona.
il file "file.exe" è un txt.

C: \User\Nome utente\Desktop\file.txt
Il codice dovrebbe stampare il percorso del file, se tu lo scazzi senza sapere quello che fai credo sia plausibile che non vada :oddio:.
Cosa stai cercando di fare? Aprire con il blocco note quel file di testo?
Codice:
Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Process.Start("notepad.exe", path & "\file.txt")
 
  • Mi piace
Reazioni: .Міха™
Il codice dovrebbe stampare il percorso del file, se tu lo scazzi senza sapere quello che fai credo sia plausibile che non vada :oddio:.
Cosa stai cercando di fare? Aprire con il blocco note quel file di testo?
Codice:
Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Process.Start("notepad.exe", path & "\file.txt")

No,sto cercando di prendere il file.txt che sta sul desktop per esempio e tutto quello che c'è scritto uploadarlo su ftp.
 
No,sto cercando di prendere il file.txt che sta sul desktop per esempio e tutto quello che c'è scritto uploadarlo su ftp.
Non scrivo in vb.net da anni ormai, (spero) funzioni:
Codice:
Sub Main()
    Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
    UploadToFtp("www.example.org", "credenziale ftp username", "credenziale ftp password", path & "/file.txt")
End Sub


Public Sub UploadToFtp(ByVal uri As String, ByVal username As String, ByVal password As String, ByVal filePath As String)
    Dim request = CType(WebRequest.Create("ftp://" & uri), FtpWebRequest)
    request.Method = WebRequestMethods.Ftp.UploadFile

    request.Credentials = New NetworkCredential(username, password)

    Dim sourceStream = New StreamReader(filePath)
    Dim fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd())
    sourceStream.Close()
    request.ContentLength = fileContents.Length

    Dim requestStream = request.GetRequestStream()
    requestStream.Write(fileContents, 0, fileContents.Length)
    requestStream.Close()

    Dim response = CType(request.GetResponse(), FtpWebResponse)

    ' upload completato

    response.Close()
End Sub
 
Non scrivo in vb.net da anni ormai, (spero) funzioni:
Codice:
Sub Main()
    Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
    UploadToFtp("www.example.org", "credenziale ftp username", "credenziale ftp password", path & "/file.txt")
End Sub


Public Sub UploadToFtp(ByVal uri As String, ByVal username As String, ByVal password As String, ByVal filePath As String)
    Dim request = CType(WebRequest.Create("ftp://" & uri), FtpWebRequest)
    request.Method = WebRequestMethods.Ftp.UploadFile

    request.Credentials = New NetworkCredential(username, password)

    Dim sourceStream = New StreamReader(filePath)
    Dim fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd())
    sourceStream.Close()
    request.ContentLength = fileContents.Length

    Dim requestStream = request.GetRequestStream()
    requestStream.Write(fileContents, 0, fileContents.Length)
    requestStream.Close()

    Dim response = CType(request.GetResponse(), FtpWebResponse)

    ' upload completato

    response.Close()
End Sub


Ho mancato qualcosa lo so.

3449tea.png
 
oh, mi sono dimenticato pure dell'Import System.IO e System.Text.

Va tutto perfetto, solamente un ultima pecca,il codice che mi hai dato te, uploada tutto come si deve,ma non lascia il text precedente,cioè lo soprascrive.
Si può fare in modo che aggiungesse il testo a quello recente?
Esempio.
Prima sul ftp c'era "lavoro.txt" con dentro le cordinate,e aprendo dinuovo l uploader esso aggiunga in basso in un altra riga i nuovi senza cancellare recenti?
Scusami.
 
@.Міха™ penso che utilizzare codici già fatti non possa sfamare le tue conoscenze. Dovresti iniziare a provare a fare qualcosa, e poi ne riparliamo. Dai un'occhiata alla classe System.Net.WebClient() e al suo metodo UploadString().
 
@.Міха™ penso che utilizzare codici già fatti non possa sfamare le tue conoscenze. Dovresti iniziare a provare a fare qualcosa, e poi ne riparliamo. Dai un'occhiata alla classe System.Net.WebClient() e al suo metodo UploadString().


Si, ma tu mostrandomi quel codice, cerco di capire cosa significa e quando dovrà esser utilizzato.
dicendomi di dare un occhiate a quei metodi cercherò qualcosa su google/youtube ma non capirò il funzionamento e quando dovrà esser utilizzato :kungfu:

Sono principiante
:V
 
Si, ma tu mostrandomi quel codice, cerco di capire cosa significa e quando dovrà esser utilizzato.
dicendomi di dare un occhiate a quei metodi cercherò qualcosa su google/youtube ma non capirò il funzionamento e quando dovrà esser utilizzato :kungfu:

Sono principiante
:V
Le idee sono due: usi direttamente il metodo UploadString() e la classe WebClient, oppure ti scrivi uno script in PHP uppato nel server FTP che ti permette di passargli il testo che verrà aggiunto al file di testo (che verrà passato attraverso il metodo GET), poi con una WebRequest fai il tutto.
Finchè non scrivi una riga di codice, credo non ti possa aiutare per ovvi motivi.
 
Le idee sono due: usi direttamente il metodo UploadString() e la classe WebClient, oppure ti scrivi uno script in PHP uppato nel server FTP che ti permette di passargli il testo che verrà aggiunto al file di testo (che verrà passato attraverso il metodo GET), poi con una WebRequest fai il tutto.
Finchè non scrivi una riga di codice, credo non ti possa aiutare per ovvi motivi.

Ho trovato questo pezzo di script che sembri di aggiungere il testo ad un testo esistente.
Oppure mi sto ingannando da solo?


Codice:
Dim sw As StreamWriter = File.AppendText("C:\testo.txt")
sw.WriteLine(testo)
sw.Close()
Catch ex As Exception
EndTry
 
Codice:
    Public Sub AppendTextViaFtp(ByVal uri As String,
                                ByVal username As String, ByVal password As String,
                                ByVal data() As Byte)
        Dim request As FtpWebRequest = DirectCast(WebRequest.Create("ftp://" & uri), FtpWebRequest)
        request.Method = WebRequestMethods.Ftp.AppendFile
        request.ContentLength = data.Length
        request.Credentials = New NetworkCredential(username, password)
        Dim requestStream As Stream = request.GetRequestStream()
        requestStream.Write(data, 0, data.Length)
        requestStream.Close()
        Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
        response.Close()
    End Sub
adesso che ci ripenso, è preferibile utilizzare qualcosa di meno astratto anzichè WebClient.
In Button1_Click inserisci questo:
Codice:
        Dim filePath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "/file.txt"

        Dim sourceStream = New StreamReader(filePath)
        Dim fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd())
        sourceStream.Close()

        AppendTextViaFtp("example.org",
                         "credenziale 1", "credenziale 2",
                         fileContents)
Come sempre, testa - non l'ho provato.
 
Codice:
    Public Sub AppendTextViaFtp(ByVal uri As String,
                                ByVal username As String, ByVal password As String,
                                ByVal data() As Byte)
        Dim request As FtpWebRequest = DirectCast(WebRequest.Create("ftp://" & uri), FtpWebRequest)
        request.Method = WebRequestMethods.Ftp.AppendFile
        request.ContentLength = data.Length
        request.Credentials = New NetworkCredential(username, password)
        Dim requestStream As Stream = request.GetRequestStream()
        requestStream.Write(data, 0, data.Length)
        requestStream.Close()
        Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
        response.Close()
    End Sub
adesso che ci ripenso, è preferibile utilizzare qualcosa di meno astratto anzichè WebClient.
In Button1_Click inserisci questo:
Codice:
        Dim filePath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "/file.txt"

        Dim sourceStream = New StreamReader(filePath)
        Dim fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd())
        sourceStream.Close()

        AppendTextViaFtp("example.org",
                         "credenziale 1", "credenziale 2",
                         fileContents)
Come sempre, testa - non l'ho provato.

Testato ma mi da questo errore non capisco il motivo.
Ci mancava un End Sub solamente

2cckohv.png
 
L'ultimo errore può dipendere dalla connessione con il server o dal server stesso, utilizza un blocco try-catch per gestire e capire l'errore.
Ti suggerisco vivamente di accantonare questo progettino e iniziare dalle basi del .net, impari poco e niente e/o con molte lacune scopiazzando codice e cercando di capirlo; te lo dice uno che ha iniziato come te fin che non ha scoperto i manuali e i libri.
 
L'ultimo errore può dipendere dalla connessione con il server o dal server stesso, utilizza un blocco try-catch per gestire e capire l'errore.
Ti suggerisco vivamente di accantonare questo progettino e iniziare dalle basi del .net, impari poco e niente e/o con molte lacune scopiazzando codice e cercando di capirlo; te lo dice uno che ha iniziato come te fin che non ha scoperto i manuali e i libri.

Esiste qualche libro/sito gratuito in italiano?
 
Stato
Discussione chiusa ad ulteriori risposte.