Ciao a tutti.
Premesso che non sono molto pratico di asp(faccio il grafico), mi sono ritrovato ad aggiornare il sito di un'associazione che ha bisogno di pagine in asp per caricare articoli, tipo giornale periodico, ai quali sia associata un'immagine, il tutto con un database access.
Ho girato un pò tra vari forum e sono riuscito a costruirmi le mie pagine per l'inserimento dei dati e dell'immagine
la form che l'utente riempie è:
la pagina add_comunicazioni.asp contiene:codice:FORM METHOD="Post" ENCTYPE="multipart/form-data" ACTION="add_comunicazioni.asp"> <table width="100%" border="0" cellpadding="0" cellspacing="0" > <tr> <td width="19%"><font size="2" face="Verdana">titolo</font></td> <td width="81%"> <input name="titolo" type="text" id="titolo" size="70" maxlength="255"></td> </tr> <tr> <td><font size="2" face="Verdana">sottotitolo</font></td> <td> <input name="sottotitolo" type="text" id="sottotitolo" size="70" maxlength="255"></td> </tr> <tr> <td><font size="2" face="Verdana">contenuto</font></td> <td><textarea name="corpo" cols="75" rows="30" id="corpo"></textarea></td> </tr> <tr> <td><font size="2" face="Verdana">immagine</font></td> <td><input name="blob" type="file" size="70"></td> </tr> <tr> <td colspan="2"><div align="center"><font size="2" face="Verdana"> <input name="Submit" type="submit" value="Aggiungi"> <input type="reset" name="Submit2" value="Reimposta"> </font> </div></td> </tr> </table> </form>
mentre la pagina inclusa upload.asp :codice:<%@ Language=VBScript %> <% IF session("amministratore")<>true then Response.Redirect "login.asp" End if %> <% response.buffer=true %> <%Response.Expires=0 Response.Clear byteCount = Request.TotalBytes RequestBin = Request.BinaryRead(byteCount) Dim UploadRequest Set UploadRequest = CreateObject("Scripting.Dictionary") BuildUploadRequest RequestBin contentType = UploadRequest.Item("blob").Item("ContentType") filepathname = UploadRequest.Item("blob").Item("FileName") filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\")) value = UploadRequest.Item("blob").Item("Value") titolo = UploadRequest.Item("titolo").Item("Value") sottotitolo = UploadRequest.Item("sottotitolo").Item("Value") corpo = UploadRequest.Item("corpo").Item("Value") 'Create FileSytemObject Component Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject") 'Create and Write to a File Set MyFile = ScriptObject.CreateTextFile(Server.MapPath("\public\foto") & "\" & filename) For i = 1 to LenB(value) MyFile.Write chr(AscB(MidB(value,i,1))) Next MyFile.Close%> <% Set RecSet = Server.CreateObject("ADODB.Recordset") SQL = "SELECT * FROM COMUNICAZIONI" RecSet.Open SQL, objConn, adOpenStatic, adLockOptimistic RecSet.Addnew RecSet.Fields.Item("data").Value = date() RecSet.Fields.Item("titolo").Value = titolo RecSet.Fields.Item("sottotitolo").Value = sottotitolo RecSet.Fields.Item("corpo").Value = corpo RecSet.Fields.Item("foto").Value = filename RecSet.Update RecSet.Close Set RecSet = Nothing %>
Allora, sembra che tutto funzioni ma con un problema, facendo varie prove di inserimento ogni volta che inserisco un testo nella textarea del form il server mi restituisce l'errore:<%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")
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Conte nt-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("filen ame="))
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),Requ estBin,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%>
mentre se nella textarea immetto una singola parola il tutto va a buon fine(aggiornamento database e upload immagine).Tipo di errore:
Errore di run-time di Microsoft VBScript (0x800A0005)
Chiamata di routine o argomento non validi: 'MidB'
/upload.asp, line 33
Potete aiutarmi a capire cosa c'è che non va?
Grazie mille

Rispondi quotando
