Upload file

Salve,
dovrei implementare in un software la possibilit di inviare un file, rilasciato dal software stesso, su una cartella di un sito web, ho cercato fra gli esempi ma non sono riuscito a trovare quasi nulla, forse non so trovarlo, ho trovato solo quello per il download di un file. Penso che sia possibile farlo ma non so come fare. ringrazio anticipatamente chiunque ha tempo e voglia di aiutarmi

Mario Graziani

Direi che la strada più semplice sia un FTP dal software allo spazio hosting.

Per farlo io uso con soddisfazione MBS Xojo (Real Studio) CURL Plugin contenuto in MBS Xojo Plugins 17.4 .

Si confermo CURL Plugin ottimo!
In alternativa se non vuoi utilizzare altri componenti puoi sempre farlo con una shell e i comandi del terminale.
Questa soluzione per prevede il condizionamento dei comandi in funzione del OS.

Buongiorno, vi ringrazio per le sollecite risposte, ieri sera ho scaricato il plugin CURL, ho fatto qualche prova con gli esempi riportati, tipo “CURLS ftp file upload” ma non riesco a trasferire nulla, ottengo come risultati 67 se nell’indirizzo scrivo (ftp://www.miosito ecc) e 7 se ometto il www. Quando ho scaricato il plugin Dynapdf questo ha subito funzionato, chiaramente inseriva la scritta rossa sul pdf che si tolta con l’acquisto della licenza. Pensavo che succedesse qualcosa del genere anche con questo plugin, magari trasferendo comunque il file e rendendolo illeggibile o qualcos’altro invece nulla, forse il result 67 significa ok ed il 7 errore visto che esce in ritardo. non so dove sbaglio o bisogna acquistare la licenza per vederlo in funzione? se cosi fosse l’acquister quanto prima visto che mi avete assicurato sulla bont dello stesso. Con Dynapdf controllando il codice dei vari esempi sono riuscito a sfruttarlo a pieno senza leggere una riga della documentazione, ho aperto la documentazione di questo plugin, sono 740 pagine sich!! mi venuta l’orticaria

Mario

Ho effettuato altre prove, ho inserito nel codice di upload gli stessi parametri, password e user, che utilizzo con Filezilla, ho provato ad aggiungere anche la porta d.OptionFTPPort = “21”, cambiato il result 3 o 9 ma non effettua comunque l’upload.
Mario

Ti suggerisco di procedere cos:

  • Apri il progetto di esempio “CURLS ftp file upload.xojo_binary_project” contenuto nel pacchetto “MBS CURL Plugin”
  • Personalizza le righe del metodo “Window1.DoUpload” relative alle credenziali di accesso FTP, ovvero:
d.OptionUsername = "test"
d.OptionPassword = "xxxx"
  • lancia l’applicazione
  • all’avvio dell’applicazione, inserisci l’indirizzo del server FTP seguito dal percorso e nome remoto del file che andrai a caricare; se per esempio vuoi caricare un file di testo che sul server remoto dovr essere messo nella root con il nome di test.txt, dovrai inserire nel textField URL la seguente sintassi “ftp://urlDelTuoSpazioFTP/test.txt
  • scegli il file di testo da caricare

A questo punto se tutto corretto, dovrebbe partire il trasferimento e ti dovresti trovare il file caricato nella destinazione.

Buongiorno, ho provato esattamente come mi hai suggerito, ma non funziona, result 9 se inserisco il nome del file, result 3 se non lo
inserisco, ho provato a modificare leggermente il codice, senza utilizzare BinaryStream, come riportato in basso ma non funziona ugualmente, da i stessi risultati
dim f as FolderItem
dim e as integer
dim d as UploadCURL
rem dim b as BinaryStream
f=GetOpenFolderItem(“all”)
if f=nil then Return
rem b = BinaryStream.Open(f)
d=new UploadCURL
rem d.stream=b
d.OptionURL=url.text
d.OptionUpload=true
d.OptionVerbose = true // generate messages
d.CollectDebugData = true // collect them
rem d.OptionInFileSize=b.Length
d.OptionUsername = “???@aruba.it
d.OptionPassword = “password del sito”
rem d.OptionPort = 21
e = d.Perform
dim DebugMessages as string = d.DebugData
listbox1.addrow "Result: "+str(e)

username e password le utilizzo tranquillamente con FileZilla.
A questo punto penso che per funzionare devo acquistare la licenza
Mario

La licenza in debug ininfluente; il test positivo che ho eseguito, di cui ti ho fornito istruzioni, stato eseguito senza inserire licenza.

Per avere ulteriori info sulla natura dell’errore, pu essere utile attivare il debug di CURL, quindi nel metodo “Window1.DoUpload”, prima della riga “e=d.Perform” inserisci la riga “d.CollectDebugData = true” e dopo la riga "listbox1.addrow "Result: “+str(e)” inserisci la riga “MsgBox d.DebugData”. Il tuo codice dovrebbe avere ora questo aspetto:

dim e as integer
dim d as UploadCURL

d=new UploadCURL

// this is the file content here:
d.InputData = "Just a little bit text. Have fun!"
d.OptionURL=url.text
d.OptionUpload=true
d.OptionUsername = "test"
d.OptionPassword = "xxxx"
d.CollectDebugData = true

e=d.Perform

listbox1.addrow "Result: "+str(e)

MsgBox d.DebugData
  • avvia l’applicazione ed effettua il caricamento
  • al termine del caricamento apparir un msgbox con il contenuto delle informazioni di debug
  • copiale e postale qui

Ti ringrazio molto per la tua pazienza , ho fatto la prova che mi hai suggerito ed ecco i risultati

Trying 31.11.32.139…
TCP_NODELAY set
Connected to www. miosito port 21 (#0)
220 Microsoft FTP Service
USER 118???@aruba.it
331 Password required
PASS B???
230 User logged in.
PWD
257 “/” is current directory.
Entry path is ‘/’
CWD public
ftp_perform ends with SECONDARY: 0
550 The system cannot find the file specified.
Server denied you to change to the given directory
Uploaded unaligned file size (0 out of 1057 bytes)
Connection #0 to host www.??? left intact

dalla risposta sembrerebbe che il file che devo trasferire non esista o qualcosa del genere
Se riesci a capirci qualcosa bene altrimenti far come mi hai suggerito

Decommenta le righe che hai commentato, ovvero:

rem dim b as BinaryStream
rem b = BinaryStream.Open(f)
rem d.stream=b
rem d.OptionInFileSize=b.Length

Nel dubbio riparti da capo dall’esempio originale “CURLS ftp file upload.xojo_binary_project”, come suggerito nel post precedente

Il debug del file originale, ed lo stesso che si ha eliminando il binarystream, questo l’ho letto sul forum internazionale da parte di Christian Schmtz. Dopo mangiato ti invio quando mi hai richiesto
Mario

RISOLTO!! questo grazie a Pietro che mi ha fatto notare che cercavo di caricare il file in un percorso inesistente, la root dello spazio ftp del sito web ha tre cartelle, quella principale e due di backup giornaliero-mensile: nell’url io inserivo ftp://www.miosito.it/cartella/file e chiaramente la cartella non veniva trovata, con il percorso giusto la cartella viene trovata: ftp://www.miosito.it/miosito.it/cartella/file. Grazie Pietro
Mario