WebUploadedFile

Buongiorno a tutti,

ho implementato una web-app con una specie di archiviazione documentale (grezza per la verit), detta web-app gira su un server linux centos7.
Quando salvo il documento da archiviare in debug (sul mio pc) il documento viene scritto nella cartella corretta, ma su server no.

Grosso modo il codice questo

//
For Each file As WebUploadedFile In files
Try
outputFile = New FolderItem("\\10.1.26.6\ArchiviazioneDocumentale$"+TextField1.Text+""+PopupMenu1.Text+""+PopupMenu2.Text +""+file.Name)
output = BinaryStream.Create(outputFile, True)
output.Write(file.Data)
output.Close

Catch e As IOException
MsgBox"ERRORE"
Continue
End Try
Next
//

Ovviamente su server Linux ho condiviso e dato i relativi permessi alla suddetta cartella, infatti nella gestione se vado a richiamare un documento lo apro tranquillamente.
Mi sono messo a video outputFile e sul mio pc in debug ho il seguente risultato :
\\10.1.26.6\ArchiviazioneDocumentale$\Amministrazione\2018\2018\Consenso al trattamento dei dati personali.pdf
sul server questo :
/var/www/cgi-bin/\\10.1.26.6\ArchiviazioneDocumentale$\Amministrazione\2018\2018\Consenso al trattamento dei dati personali.pdf

Infatti il file al posto di andare nella cartella \\10.1.26.6\ArchiviazioneDocumentale$ ecc… va a finire in /var/www/cgi-bin/

ho provato a sostituire la riga outputFile = New FolderItem("…
con : outputFile =New FolderItem(“smb://10.1.26.6/archiviazionedocumentale$/”+TextField1.Text+"/"+PopupMenu1.Text+"/"+PopupMenu2.Text +"/"+file.Name)
ma mi esce un unsupportedformatexception… che leggendo nelle varie guide dovrebbe essere un problema di accesso al percorso…

Grazie sempre
Enrico

Ipotizzo.
Su linux come separatore si usa / non \ se usi \\ te lo prende come relativo e quindi te lo concatena alla directory dell’app.
Se usi smb://10.1.26.6/ usi un protocollo di rete e folderitem lavora con i path.
Oltretutto non credo che dovresti usare l’ip del server nel path del file, se l’app gi sul server usa un path assoluto o relativo ma sei sotto unix quindi usando /. Anzi meglio ancora se usi i costruttori di Folderitem, i child e le specialfolder nel caso.
Dove sta l’app e dove vuoi salvare i files?

in effetti il ragionamento corretto… ora provo non vorrei essermi perso in poco…
adesso provo
L’app sotto la cartella www.cgi-bin del server ma i documenti li metto su un server remoto che collego al server di produzione tramite smb

Grazie Michelangelo

Potresti allora fare una cosa ancora più semplice, montarlo tramite fuse o similari in un path noto e fare una cosa così:

metti in fstab
//10.1.26.6/cartella_condivisa /punto_di_mount cifs user={user},pass={pass} 0 0

e poi nel codice una cos del genere:

Dim uploadFolder As FolderItem
upload_folder = GetFolderItem("/punto_di_mount")
tgt_file = upload_folder.Child(file.Name)
output = BinaryStream.Create(tgt_file, True)
output.Write(file.Data)
output.Close