Hallo

es ist theoretisch schon möglich, Formfelder aus dem Strom auszulesen. Habe
ich mal auf der Microsoft-Seite gefunden (weiß aber nicht mehr, wo).


aufrufende Datei mit "normalen" Feldern (folder, ornder) und "file" (blob):
...
<form onSubmit="return formCheck()" method="post"
enctype=multipart/form-data action="upload.asp" target="HauptFenster"
name="form1">
 <input name="folder" type="hidden" value="<%=ordner%>">
 <table>
  <tr>
   <td>Speichern in:&nbsp;<img src="images/ordner2.gif" width="16"
height="13" border="0" alt="">&nbsp;
    <input size="40" name="ordner" type="text" readonly
value="<%=ordnername%>"></td>
  </tr>
  <tr>
   <td><iframe height="150" width="400"
src="upload_browser.asp?ordner=<%=request.querystring("ordner")%>"></iframe>
</td>
  </tr>
  <tr>
   <td><input type="file" name="blob"></td>
  </tr>
  <tr>
   <td><input type="submit" name="Abschicken" value="Upload">&nbsp;<input
type="button" onClick="window.close()" value="Abbrechen"></td>
  </tr>
 </table>
</form>
...

ausführende Datei:
...
byteCount = Request.TotalBytes

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

BuildUploadRequest  RequestBin

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

ver_index    = Session("Projektkuerzel")

'(HIER AUSLESEN DER FELDER AUS DEM DICTIONARY:)

uploadpfad   = UploadRequest.Item("folder").Item("Value")
tempordner   = UploadRequest.Item("ordner").Item("Value")

...
usw.

...
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("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

...


Gruß Alexander Reverchon
 

> -----Ursprüngliche Nachricht-----
> Von: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] Im Auftrag von Stefan Häsler
> Gesendet: Donnerstag, 17. Juni 2004 12:43
> An: [EMAIL PROTECTED]
> Betreff: RE: [Advanced.asp] Upload und Mailversand
> 
> > Ich habe wie gesagt ein Formular. Dieses ruft beim Absenden 
> > die gleiche Seite erneut auf und wenn dann "gesendet" gesetzt 
> > ist - was ich halt über
> > Request.Form("gesendet") abfrage - wird die Verarbeitung der 
> > Daten gestartet. Dabei soll zunächst der Upload erfolgen und 
> > anschließend der Mailversand.
> 
> Eben, genau da liegt das Problem. Du mußt auf eine neue Seite 
> verweisen (schon im Formular). Und auf dieser neuen Seite darf nichts
> vorkommen, was mit Request zu tun hat.
> Du kannst die Daten aus dem Formular aber mittels der 
> Upload-Komponente abfragen.
> 
> Stefan
> 
> _______________________________________________
> Advanced.asp Mailingliste, Postings senden an:
> [EMAIL PROTECTED]
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/advanced.asp
> 
> 

_______________________________________________
Advanced.asp Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/advanced.asp

Antwort per Email an