Modifica file upload in ASP

Stato
Chiusa ad ulteriori risposte.

LucaVet

Nuovo Utente
29 Lug 2021
2
0
1
Ciao a tutti,
chiedo scusa in anticipo se per caso questa richiesta già è stata affrontata in altri post, ho fatto una ricerca ma non ho trovato nulla che mi serviva nello specifico.

Seconda premessa, non sono ai vostri livelli in ASP, non faccio lo sviluppatore per mestiere pertanto abbiate un pizzico di pasienza.

Veniamo a noi, ho un piccolo DataBase, per una mia collezione è dovrei cambiare / modificare la pagina di upload di 1 immagine con la possibilità di arrivare a 4.

Pagina Seleziona Immagini:

<form enctype="multipart/form-data" method=post onSubmit="return validate(form);" action="inserisci_nuovo_session_reg.asp" name="form">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="middle"><div id="image-preview">
<label for="image-upload" id="image-label">Seleziona l'Immagine</label>
<input type="file" name="foto1" id="image-upload" />
</div></td>
<td align="center" valign="middle"><div id="image-preview1">
<label1 for="image-upload1" id="image-label">Seleziona l'Immagine</label1>
<input type="file" name="foto2" id="image-upload1" />
</div></td>

</tr>
<tr>
<td align="center" valign="middle"><div id="image-preview2">
<label2 for="image-upload2" id="image-label">Seleziona l'Immagine</label2>
<input type="file" name="foto3" id="image-upload2" />
</div></td>
<td align="center" valign="middle"><div id="image-preview3">
<label3 for="image-upload3" id="image-label">Seleziona l'Immagine</label3>
<input type="file" name="foto4" id="image-upload3" />
</div></td>

</tr>

Ovviamente nel DB MYSQL ho i campi Foto1, 2, 3 e 4.
Con delle session mi sto tirando indietro dei dati che ho inserito in un precedente form.

File di upload e scrittura - uoload.asp

<%@LANGUAGE="VBSCRIPT"%>
<!--METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" NAME="CDO for Windows 2000 Type Library" -->
<!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library" -->
<!--#include file="conn.asp" -->

<%

Dim folder
Dim data_inserimento
Dim categoria
Dim serie
Dim nome
Dim cognome
Dim pronome
Dim protettore_protettrice
Dim patrone_di
......

Dim byteCount
Dim RequestBin
Dim PosBeg
Dim i
Dim char
Dim PosEnd
Dim boundary
Dim boundaryPos
Dim Pos
Dim intCount
Dim Name
Dim PosFile
Dim PosBound
Dim Value
Dim FileName
Dim ContentType
Dim nome_file
Dim Conn
Dim filepathname
Dim ScriptObject
Dim MyFile
Dim Sql
Dim Rs



' //// Directory dove carico il file (la cartella ha i permessi in scrittura)
folder = "/public/immagini"


Response.Expires=0
Response.Buffer = TRUE
Response.Clear

Sub BuildUploadRequest(RequestBin)
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
If PosFile<>0 AND (PosFile<PosBound) Then
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
UploadControl.Add "Value" , Value
UploadRequest.Add name, UploadControl
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function

byteCount = Request.TotalBytes

RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' //// Fine Componente Upload

' //// riempio le variabili con valori proveninti dalla form
'progressivo = UploadRequest.Item("progressivo").Item("Value")
'data_inserimento = UploadRequest.Item("data_inserimento").Item("Value")
categoria = UploadRequest.Item("categoria").Item("Value")
serie = UploadRequest.Item("serie").Item("Value")
nome = UploadRequest.Item("nome").Item("Value")
cognome = UploadRequest.Item("cognome").Item("Value")
pronome = UploadRequest.Item("pronome").Item("Value")
protettore_protettrice = UploadRequest.Item("protettore_protettrice").Item("Value")
patrone_di = UploadRequest.Item("patrone_di").Item("Value")
........


' //// controllo che la form sia state regolarmente popolata
'If IsNull(categoria) OR categoria = "" OR IsNull(serie) OR serie = "" Then
'Response.Write ("<center><br><b>CAMPI OBBLIGATORI!</b><br><br><a href='javascript:history.back()'><b>RITORNA</b></a></center>")
'Response.End
'End if


'etas=Datediff("yyyy",data_inserimento)


Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "Driver={MySQL ODBC 3.51 Driver};SERVER=;Database=Sql1_1;port=;UID=Sql;PWD=;"

' //// creo il file nella folder
if UploadRequest.Item("foto1").Item("FileName")="" then

Else

contentType = UploadRequest.Item("foto1").Item("ContentType")
filepathname = UploadRequest.Item("foto1").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("foto1").Item("Value")

Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder)&"\"&filename)

For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close

End if

' //// seleziono la tabella dove scrivero l'ora, il titolo ed il nome del file
Sql = "Select * FROM santini"

Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open SQL, Conn, 1, 2

' //// aggiugo un nuovo record alla tabella
Rs.AddNew
Rs("data_inserimento") = data_inserimento
Rs("categoria") = categoria
Rs("serie") = serie
Rs("nome") = nome
Rs("cognome") = cognome
Rs("pronome") = pronome
Rs("protettore_protettrice") = protettore_protettrice
Rs("patrone_di") = patrone_di
Rs("reliqua") = reliqua
.......
Rs("foto1") = filename
Rs("foto2") = filename
Rs("foto3") = filename
Rs("foto4") = filename
Rs("note") = note


categoria=replace(categoria,"'","''")
serie=replace(serie,"'","''")
nome=replace(nome,"'","''")
cognome=replace(cognome,"'","''")
pronome=replace(pronome,"'","''")
protettore_protettrice=replace(protettore_protettrice,"'","''")
patrone_di=replace(patrone_di,"'","''")
reliqua=replace(reliqua,"'","''")
......
foto1=replace(foto1,"'","''")
foto2=replace(foto2,"'","''")
foto3=replace(foto3,"'","''")
foto4=replace(foto4,"'","''")
note=replace(note,"'","''")


'Rs("data_inserimento") = date()
Rs.UpDate

' //// chiudo il record set e libero le risorse
Rs.Close
Set Rs = Nothing


' //// chiudo la connessione e libero le risorse
Conn.Close
Set Conn = Nothing

' //// carico la pagina di risposta e stampo a video il link al file caricato
Response.Redirect("registrazione_effettuata.asp#ok")
%>


Se carico 1 immagine va bene, se ne carico di più nei campi del DB mi inserisce l'ultima che ho selezionato in tutti e 4 campi foto :(

Vi chiedo se potreste essere cosi gentili e pazienti nel darmi qualche dritta su come modificarlo (credo che sia possibile) al fine di poter caricare tutte e 4 foto.

Grazie mille!
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
codice.JPG
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Ciao a tutti,
chiedo scusa in anticipo se per caso questa richiesta già è stata affrontata in altri post, ho fatto una ricerca ma non ho trovato nulla che mi serviva nello specifico.

Seconda premessa, non sono ai vostri livelli in ASP, non faccio lo sviluppatore per mestiere pertanto abbiate un pizzico di pasienza.

Veniamo a noi, ho un piccolo DataBase, per una mia collezione è dovrei cambiare / modificare la pagina di upload di 1 immagine con la possibilità di arrivare a 4.

Pagina Seleziona Immagini:

<form enctype="multipart/form-data" method=post onSubmit="return validate(form);" action="inserisci_nuovo_session_reg.asp" name="form">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="middle"><div id="image-preview">
<label for="image-upload" id="image-label">Seleziona l'Immagine</label>
<input type="file" name="foto1" id="image-upload" />
</div></td>
<td align="center" valign="middle"><div id="image-preview1">
<label1 for="image-upload1" id="image-label">Seleziona l'Immagine</label1>
<input type="file" name="foto2" id="image-upload1" />
</div></td>

</tr>
<tr>
<td align="center" valign="middle"><div id="image-preview2">
<label2 for="image-upload2" id="image-label">Seleziona l'Immagine</label2>
<input type="file" name="foto3" id="image-upload2" />
</div></td>
<td align="center" valign="middle"><div id="image-preview3">
<label3 for="image-upload3" id="image-label">Seleziona l'Immagine</label3>
<input type="file" name="foto4" id="image-upload3" />
</div></td>

</tr>

Ovviamente nel DB MYSQL ho i campi Foto1, 2, 3 e 4.
Con delle session mi sto tirando indietro dei dati che ho inserito in un precedente form.

File di upload e scrittura - uoload.asp

<%@LANGUAGE="VBSCRIPT"%>
<!--METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" NAME="CDO for Windows 2000 Type Library" -->
<!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library" -->
<!--#include file="conn.asp" -->

<%

Dim folder
Dim data_inserimento
Dim categoria
Dim serie
Dim nome
Dim cognome
Dim pronome
Dim protettore_protettrice
Dim patrone_di
......

Dim byteCount
Dim RequestBin
Dim PosBeg
Dim i
Dim char
Dim PosEnd
Dim boundary
Dim boundaryPos
Dim Pos
Dim intCount
Dim Name
Dim PosFile
Dim PosBound
Dim Value
Dim FileName
Dim ContentType
Dim nome_file
Dim Conn
Dim filepathname
Dim ScriptObject
Dim MyFile
Dim Sql
Dim Rs



' //// Directory dove carico il file (la cartella ha i permessi in scrittura)
folder = "/public/immagini"


Response.Expires=0
Response.Buffer = TRUE
Response.Clear

Sub BuildUploadRequest(RequestBin)
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
If PosFile<>0 AND (PosFile<PosBound) Then
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
UploadControl.Add "Value" , Value
UploadRequest.Add name, UploadControl
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function

byteCount = Request.TotalBytes

RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' //// Fine Componente Upload

' //// riempio le variabili con valori proveninti dalla form
'progressivo = UploadRequest.Item("progressivo").Item("Value")
'data_inserimento = UploadRequest.Item("data_inserimento").Item("Value")
categoria = UploadRequest.Item("categoria").Item("Value")
serie = UploadRequest.Item("serie").Item("Value")
nome = UploadRequest.Item("nome").Item("Value")
cognome = UploadRequest.Item("cognome").Item("Value")
pronome = UploadRequest.Item("pronome").Item("Value")
protettore_protettrice = UploadRequest.Item("protettore_protettrice").Item("Value")
patrone_di = UploadRequest.Item("patrone_di").Item("Value")
........


' //// controllo che la form sia state regolarmente popolata
'If IsNull(categoria) OR categoria = "" OR IsNull(serie) OR serie = "" Then
'Response.Write ("<center><br><b>CAMPI OBBLIGATORI!</b><br><br><a href='javascript:history.back()'><b>RITORNA</b></a></center>")
'Response.End
'End if


'etas=Datediff("yyyy",data_inserimento)


Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "Driver={MySQL ODBC 3.51 Driver};SERVER=;Database=Sql1_1;port=;UID=Sql;PWD=;"

' //// creo il file nella folder
if UploadRequest.Item("foto1").Item("FileName")="" then

Else

contentType = UploadRequest.Item("foto1").Item("ContentType")
filepathname = UploadRequest.Item("foto1").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("foto1").Item("Value")

Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder)&"\"&filename)

For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close

End if

' //// seleziono la tabella dove scrivero l'ora, il titolo ed il nome del file
Sql = "Select * FROM santini"

Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open SQL, Conn, 1, 2

' //// aggiugo un nuovo record alla tabella
Rs.AddNew
Rs("data_inserimento") = data_inserimento
Rs("categoria") = categoria
Rs("serie") = serie
Rs("nome") = nome
Rs("cognome") = cognome
Rs("pronome") = pronome
Rs("protettore_protettrice") = protettore_protettrice
Rs("patrone_di") = patrone_di
Rs("reliqua") = reliqua
.......
Rs("foto1") = filename
Rs("foto2") = filename
Rs("foto3") = filename
Rs("foto4") = filename
Rs("note") = note


categoria=replace(categoria,"'","''")
serie=replace(serie,"'","''")
nome=replace(nome,"'","''")
cognome=replace(cognome,"'","''")
pronome=replace(pronome,"'","''")
protettore_protettrice=replace(protettore_protettrice,"'","''")
patrone_di=replace(patrone_di,"'","''")
reliqua=replace(reliqua,"'","''")
......
foto1=replace(foto1,"'","''")
foto2=replace(foto2,"'","''")
foto3=replace(foto3,"'","''")
foto4=replace(foto4,"'","''")
note=replace(note,"'","''")


'Rs("data_inserimento") = date()
Rs.UpDate

' //// chiudo il record set e libero le risorse
Rs.Close
Set Rs = Nothing


' //// chiudo la connessione e libero le risorse
Conn.Close
Set Conn = Nothing

' //// carico la pagina di risposta e stampo a video il link al file caricato
Response.Redirect("registrazione_effettuata.asp#ok")
%>


Se carico 1 immagine va bene, se ne carico di più nei campi del DB mi inserisce l'ultima che ho selezionato in tutti e 4 campi foto :(

Vi chiedo se potreste essere cosi gentili e pazienti nel darmi qualche dritta su come modificarlo (credo che sia possibile) al fine di poter caricare tutte e 4 foto.

Grazie mille!

Ciao, da una rapida occhiata ho notato che la variabile nome file è identica su tutti e 4 i campi, devi meglio valorizzare il "Request.Form".

Codice:
Rs("foto1") = filename
Rs("foto2") = filename
Rs("foto3") = filename
Rs("foto4") = filename
 
Stato
Chiusa ad ulteriori risposte.
Discussioni simili
Autore Titolo Forum Risposte Data
R Modifica codice per l'upload di più file PHP 1
S [OFFRO] Rimozione o aggiunta di Password ai file PDF e opzionalmente loro modifica Offerte e Richieste di Lavoro e/o Collaborazione 2
Z Modifica ricorsiva file html HTML e CSS 3
D Modifica data creazione file in fso Classic ASP 0
P Ultima modifica file remoto PHP 5
A Script che restituisce il file con data di modifica più recente di una directory PHP 15
S il file pdh.dll si modifica da solo Windows e Software 0
N Modifica valori stringhe di un altro file PHP 7
P Modifica file XML PHP 2
D caricamento file su db e modifica dati PHP 0
F problema con la modifica del testo di un file PHP 1
G modifica file flash Flash 6
Cforever modifica file *.txt tramite javascript....???? Javascript 6
D Jquery - modifica elemenento onlick jQuery 1
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
JeiMax Modifica codice php personalizzato PHP 2
P Pagina modifica record che non funziona PHP 0
P modifica colore A Hover link website . WordPress 2
P Modifica con PHP di un node in una sitemap xml PHP 0
C Software modifica sitoweb in tempo reale WordPress 12
G Modifica immagine di sfondo attraverso un bottone PHP 18
L modifica dati. PHP 1
G modifica corretta funzione da eregi() a preg_match() PHP 3
G Modifica testo Photoshop 3
felino Excel: popolare una cella con la data di modifica della riga a cui appartiene Windows e Software 3
felino [Wordpress] Modifica main color del template WordPress 8
M [PHP] Modifica account PHP 3
S [OFFRO] Creazione di programmi per la modifica automatizzata di testi Offerte e Richieste di Lavoro e/o Collaborazione 0
F [PHP] modifica del body email con checked PHP 8
G Modifica da sito statico HTML a dinamico in Wordpress SEO e Posizionamento 1
Cosina Modifica script textarea jQuery 0
M [PHP] Calcolare costi su modifica orari PHP 4
A [PHP] Modifica caratteri di una query Oracle SQL PHP 0
F modifica recensione google Discussioni Varie 2
C Photoshop CS 6 salvare una modifica Photoshop 0
L [PHP] Modifica in tabella ultimo id PHP 5
C Pagina fb notifica modifica post Social Media Marketing 1
Q Notice: Undefined index: codice in C:\xampp\htdocs\STAGE\calendario\modifica.php on line 10 PHP 8
C [Joomla] [HTML] Modifica codice per adattamento app Joomla 18
Daniele_Carrara [Javascript] Modifica input date Javascript 5
J modifica spooler di stampa per stampare in ordine di nome i files pdf Windows e Software 2
Emix [PHP] Ricerca e modifica su due tabelle PHP 26
M [PHP] Tabella datagrid con icona di modifica che cambia in base a parametro PHP 0
Andrea1981 [WordPress] [HTML] Help modifica credits nel footer.Tema Customizr. WordPress 5
K [Visual Basic] Stampa e modifica record non funziona più Visual Basic 0
K [ASP.Net] Problema stampa e modifica ms sql ASP.NET 0
K stampa e modifica tabella in php e ms sql PHP 2
Michaelweb93 [WordPress] [HTML] Modifica sezione - pagina sito web WordPress 1
A [PHP] [RISOLTO] Modifica record db da form PHP 11
T [PHP] piccola modifica a script (non mio...) PHP 8

Discussioni simili