Questo è un form per inserire un file (per esempio un'immagine) e un campo di testo:
codice:
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>

<form name="formfile" method="post">
<div align="center">Carica file sul sito
<input type="button" name="link" value="Seleziona documento" onclick="javascript: MM_openBrWindow('upload/uploadform.asp','','width=500,height=300,top=120,left=120');"/></div>


</form>
<form name="notizie" method="post" action="notizie.asp">
<div align="center">Titolo
<input type="text" name="titolo" /></div>


  
  <div align="center"><input type="submit" name="submit" value="Invia" /><input type="reset" name="reset" value="Annulla" /></div>
</form>
Il pulsante "Seleziona documento" apre quest'altro form (uploadform.asp nella cartella upload):
codice:
 <form method="post" enctype="multipart/form-data" action="upload.asp">
        <p align="center">File: 
            <input type="file" name="link" size=30>
			
			            


            <input type="submit" name="Enter" value="Conferma"></p>
    </form>
La pagina ASP che effettua l'upload del documento (o immagine) sul server (upload.asp) è:
codice:
<%
Server.ScriptTimeout = 200

'variabili di configurazione
Dim folder
folder = "/immagini"  			'directory sul server con accesso in scrittura
'fine variabili di configurazione
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

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

'Create FileSytemObject Component
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

'Create and Write to a File
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
%>

<html>
<head>
	<title>UPLOAD FILE</title>
	
	<script language="JavaScript">
     function close_reload() {
       window.opener.location.reload();
	   window.close();
  	}
	</script>



</head>
<body>



 <center><div>File caricato</div>
 

</p>
<div>Chiudi finestra</div></center>
</body>
</html>
Con questa procedura, prima scegli il file da caricare sul server e ne fai l'upload, poi inserisci i campi nel form "normale" per la relativa elaborazione (che, in questo caso, viene eseguita dalla pagina notizie.asp, come puoi vedere dall'action del primo form). L'elaborazione può consistere nell'inserimento dei dati in un database, nella loro presentazione a video, ecc..........il nome del file caricato lo puoi inserire nel database sia scrivendolo a mano nell'altro form, sia (meglio) recuperandolo dal form di upload (per esempio con una variabile di sessione).
I files (o immagini) da caricare possono benissimo essere due, puoi ottenere questo raddoppiando il "formfile" (formfile1 e formfile2) e, dopo i due upload, compilare e inoltrare il form con i campi di testo (nell'esempio: il form notizie).

Spero che queste indicazioni ti possano essere di aiuto...........