Salve a tutti,
ho una pagina la quale contiene un form che compilandolo permette di modificare una news scritta in precendenza (usando lo stesso form), il form mi manda come azione ad una pagina che fa l'upload della foto e il conseguente aggiornamento del database.
Lo script esegue un controllo sull'estensione del file (accetta files d'immagine), ma purtroppo lo script funziona solo se la foto non c'è o se viene settato valore foto=null nel campo relativo alla foto del db.
Questo è lo script:
La cosa più strana è che se io ometto la seguente riga, (relativa al response.redirect) lo script funziona, ma mi accetta tutti i tipi di files.codice:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>controlloNews</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body > <% ' Se il server supera il limite ti rimando alla pagina di erroreUpload Server.ScriptTimeout = 120 if session("login") then 'Questa variabile setta il percorso di dove effettuare l upolad 'la cartella non puo non esistere lo script non la crea ! ! ! percorso = "/news/foto/" 'script per settare la data della foto gg=datePart("d", now()) mm=datePart("m",now()) aaaa = datePart("yyyy", now()) data = gg &"/"& mm & "/" & aaaa hh=datePart("h",now()) min=datePart("n",now()) sec=datePart("s",now()) ' da in futuro il nome alla foto in modo tale dei avere un nome univoco per ogni foto mascheraNome = gg &"_"& mm & "_" & aaaa &"__"& hh &"_"& min &"_"& sec id = Request.QueryString("id") 'script per la lettura binaria dei cambi ByteRicevuti = Request.TotalBytes if ByteRicevuti > 0 then DatiRicevuti = Request.BinaryRead(ByteRicevuti) For i = 1 To lenB(DatiRicevuti) FileBinario = FileBinario & chr(ascB(midB(DatiRicevuti,i,1))) Next FirmaFile = left(FileBinario,instr(FileBinario,"" & vbCrLf)-1) ArrPezzi = split(FileBinario,FirmaFile) for item = 1 to ubound(ArrPezzi)-1 Inizio = instr(ArrPezzi(item),"" & vbCrLf & "" & vbCrLf) Intestazione = left(ArrPezzi(item),Inizio-1) Inizio = Inizio + len("" & vbCrLf) + len("" & vbCrLf) ContenutoFile = mid(ArrPezzi(item),Inizio,len(ArrPezzi(item))-Inizio-1) ' Recupero i campi se sono compilati if instr(Intestazione,"titolo") > 0 then titolo = ContenutoFile end if if instr(Intestazione,"testoNews") > 0 then testoNews = ContenutoFile end if if instr(Intestazione,"foto") > 0 then foto = ContenutoFile end if ' Qui recupero il file da uploadare (se presente) foto1 if instr(Intestazione,"foto") > 0 then i = instr(Intestazione,"filename=") j = instr(i + 10,Intestazione,chr(34)) NomeUpload = mid(Intestazione,i + 10,j-i-10) i = instrRev(NomeUpload,"\") if i<>0 then NomeFile = mid(NomeUpload,i + 1) else NomeFile = NomeUpload end if 'Qui ricavo l estensione del file (se presente) per stabilire quale file passa e quale no, ' nel mio caso gif e jpeg se non è di questo tipo mi da la pag di errore if NomeFile > "" then dim arrParti arrParti=split(NomeFile,".") dim strEstensione strEstensione=arrParti(UBOUND(arrParti)) Select Case strEstensione Case "gif","jpeg","jpg" ' Scrivo il file sul server if i<>0 then Set FSO = CreateObject("Scripting.FileSystemObject") Upload1 = True DimensioneFile1 = len(ContenutoFile) 'qui va inserito uno script che controlla il il peso dell immagine EstensioneFile1 = right(ContenutoFile,3) NomeFile = mascheraNome &"."& strEstensione Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile), True, False) textStream.Write ContenutoFile textStream.Close Set textStream = Nothing Set FSO = Nothing end if Case else ' Se il file nn è tipo immagine vai alla pagina di errore Response.Redirect("erroreUpload.htm") end Select end if end if next end if 'aggiornamento dati nella tabella set conn = server.CreateObject("ADODB.Connection") conn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & server.MapPath("/mdb-database/news.mdb")) dim rec rec = "Update news set titolo='"&titolo&"', testo='"&testoNews&"', foto='"&NomeFile&"' where id="&id 'controllo l esito del messaggio on Error Resume next conn.execute rec if err = 0 then rec.close set rec = nothing Response.Redirect("esitoPositivo.htm") risultato = "ok" else risultato = "ko" response.Redirect("errore.htm") end if else response.Redirect("login.asp") end if %> </body> </html>
ho controllato questo script per filo e per segno ma non riesco a trovare l'errore, la cosa piu strana che usando lo stesso script per effettuare un inserzione mi funziona.codice:Case else ' Se il file nn è tipo immagine vai alla pagina di errore 'Response.Redirect("erroreUpload.htm") ' ho messo l apice di commento end Select
vi ringrazio in anticipo.

Rispondi quotando