Datei an Webserver übertragen

13/08/2008 - 11:50 von Volker Strähle | Report spam
Hallo zusammen,

ich möchte (muß) eine Datei auf einen Webserver (Linux, PHP) übertragen.
Folgendes habe ich:

Dim strTarget As String =
"http://localhost:8080/xtcvs/services/testupload.php"

Dim colData As New NameValueCollection

colData.Add("article", "lageplan1")

Dim objClient As New WebClient

objClient.QueryString = colData

Dim aryResult() As Byte =
objClient.UploadFile("http://localhost:8080/xtcvs/services/testupload.php",
"POST", "c:\ablage\bilder\lageplan1.jpg")

Dim strResult As String = Encoding.UTF8.GetString(aryResult)

MsgBox(strResult)



Die Datei-Übertragung funktioniert, aber ich würde gerne auch noch ein
Datenfeld übermittlen, in dem genauere Infos zur Datei stehen.

Auf der Serverseite sieht es folgendermaßen aus:

<?php

define('_VALID_XTC',true);

$tempfile = $_FILES['file']['tmp_name'];

$art = $_POST['article'];

if(is_uploaded_file($tempfile))

{

echo $tempfile;

echo $art;

$handle = fopen($tempfile, "r");

$fp=fopen("uploaded.file","w");

$contents = fread($handle, filesize($tempfile));

fwrite($fp,$contents);

fclose($handle);


}

echo '<form action="" method="post" ENCTYPE="multipart/form-data">

<input type="file" name="file" size="30">

<input name="article" size="20"> <input type="submit" value="Upload">

</form>';

?>

Rufe ich das im Browser auf, geht es. Wie pack ich das aber in o. g. Code?



Danke



Volker
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
13/08/2008 - 12:33 | Warnen spam
Hallo Volker,

"Volker Stràhle" schrieb:

Die Datei-Übertragung funktioniert, aber ich würde gerne auch noch ein Datenfeld übermittlen, in dem genauere Infos zur Datei
stehen.



Das, was zum Server gesendet wird, sieht in dem Fall so aus:


Dateiinhalt

Abc

Im Endeffekt müsstest Du das nachbauen. Ob es bereits eine Unterstützung
dafür im Framework gibt, weiß ich grad nicht, es dürfte aber nicht so
schwer sein, das selbst zu machen.



Dim PostData As String = "<String, der so aussieht wie das obige Beispiel>"

Dim Request As HttpWebRequest = CType( WebRequest.Create( "Adresse" ), HttpWebRequest )
Request.Method = "POST"
Request.ContentType = "multipart/form-data"
Request.ContentLength = PostData.Length

Dim RequestStream = New StreamWriter( Request.GetRequestStream() )
RequestStream.Write( PostData )
RequestStream.Close()
RequestStream.Dispose()

Dim ResponseStream As New StreamReader( Request.GetResponse().GetResponseStream() )

<Variable> = ResponseStream.ReadToEnd()

ResponseStream.Close()
ResponseStream.Dispose()



Wenn Du mit Binàrdateien umgehst, musst Du noch ein wenig dran arbeiten, da das
mit Strings natürlich nicht so geht. (Hatte aber grad wenig Lust, das noch mit
einzubauen :)

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen