Avatar billede angelenglen Nybegynder
10. september 2012 - 13:51 Der er 8 kommentarer og
1 løsning

ASP "forward" POST-data med filupload via MSXML2.ServerXMLHTTP

Jeg har eksempelvis følgende form:

<form name="minform" action="" method="POST">
<input type="text" name="tekst" value="tekst">
<input type="submit" value="Send">
</form>


Den submitter til sig selv, hvor formen "fanges" og benytter nedenstående funktion til at sende form data videre til et andet ASP-script, og returnerer dette ASP-scripts output:

Function ForwardPostAndReturnResult(siteId,parms)
    Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open "POST", "http://www.test.dk/output/?"& parms & "&siteId=" & siteId, False   
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    xmlhttp.send(Request.Form)
    ForwardPostAndReturnResult = xmlhttp.responseText
    Set xmlhttp = Nothing    
End Function



-men nu har jeg brug for at kunne sende en fil med.
Hvordan klarer man det?

<form name="minform" action="" method="POST">
<input type="text" name="tekst" value="tekst">
<input type="file" name="fil" value="tekst">
<input type="submit" value="Send">
</form>


- hvis jeg sender ovenstående form igennem funktionen, kommer ingenting igennem.
Avatar billede softspot Forsker
10. september 2012 - 14:00 #1
Først og fremmest skal du huske enctype="multipart/form-data" i dit form-tag.
Avatar billede angelenglen Nybegynder
10. september 2012 - 14:07 #2
ah korrekt, det smuttede i mit eksempel.
Det har jeg selvfølgelig på :-)
Avatar billede softspot Forsker
10. september 2012 - 14:39 #3
Du skal muligvis gøre det samme i Server-til-Server kaldet:

  xmlhttp.setRequestHeader "Content-Type", "multipart/form-data"

men det er jeg noget usikker på, for jeg har aldrig sendt filer vha.  ServerXMLHTTP.
Avatar billede angelenglen Nybegynder
10. september 2012 - 14:41 #4
Hmm i så fald skal jeg kun gøre det hvis afsender-formen er multipart.

Nogen der ved hvordan jeg kan se om det er tilfældet?
Avatar billede softspot Forsker
10. september 2012 - 15:04 #5
Du kan prøve at "dumpe" Request.ServerVariables (eller lure med Fiddler) og se om der skulle være en værdi i request'et, der angiver, hvilken enctype forespørgslen er sendt med.

Alternativt kan du sende en parameter i querystring, som angiver at der er medsendt en fil. Jeg er klar over at denne løsning er suboptimal, da den er mere manuel og kræver disciplin, når man sender filer...
Avatar billede angelenglen Nybegynder
19. oktober 2012 - 09:11 #6
Foreløbig er jeg nødt til at droppe dette projekt, men vil gerne dele nogle points ud for hjælpen.

Læg venligst svar :-)
Avatar billede softspot Forsker
19. oktober 2012 - 09:53 #7
Er det fordi det ikke er muligt, eller er der andre årsager til at du må droppe det?

Anyway! Svar får du her... :-)
Avatar billede angelenglen Nybegynder
19. oktober 2012 - 09:56 #8
Desværre en af de dårligere grunde: tidsnød :-/
Avatar billede angelenglen Nybegynder
19. oktober 2012 - 09:56 #9
Hvis jeg engang kommer videre, vender jeg selvfølgelig tilbage og skriver mine erfaringer her :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester