Hallo,
ich bin langsam am Verzweifeln. Stundenlang versuche ich jetzt schon ein Programm fertig zu bekommen, das mir ein Bild hochladen soll.
Hier mein .NET Code:
Und der php-Code:
Das php-Formular funktioniert soweit. Allerdings kommt beim Debuggen noch die Fehlermeldung im .NET Code bei
RequestStream.Close()
Die Anfrage wurde abgebrochen: Die Anfrage wurde abgebrochen..
Eine Ausnahme (erste Chance) des Typs "System.Net.WebException" ist in System.dll aufgetreten.
Kann mir jemand sagen wie ich diesen Fehler rausbekommen? Ich glaube, dann müsste alles funktionieren, oder?
ich bin langsam am Verzweifeln. Stundenlang versuche ich jetzt schon ein Programm fertig zu bekommen, das mir ein Bild hochladen soll.
Hier mein .NET Code:
Code:
Dim HttpWebRequest As HttpWebRequest = HttpWebRequest.Create("http://seite.de/upload.php")
Dim Boundary As String = "---------------------------" & DateTime.Now.Ticks.ToString
HttpWebRequest.Credentials = CredentialCache.DefaultCredentials
HttpWebRequest.Method = "POST"
HttpWebRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1) Gecko/20090624 Firefox/3.5"
HttpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HttpWebRequest.KeepAlive = "300"
HttpWebRequest.Referer = "http://http://seite.de/"
HttpWebRequest.CookieContainer = New CookieContainer()
HttpWebRequest.ContentType = "multipart/form-data; boundary=" & Boundary
'RequestStream Informationen
Dim BoundaryBytes() As Byte = System.Text.Encoding.ASCII.GetBytes(("--" + Boundary & Environment.NewLine))
Dim InfoBytes() As Byte = System.Text.Encoding.ASCII.GetBytes("Content-Disposition: form-data; name=""uploaded_file""; filename=""screenshot.png""" _
& Environment.NewLine & "Content-Type: image/png" & Environment.NewLine & Environment.NewLine)
HttpWebRequest.ContentLength = BoundaryBytes.Length & InfoBytes.Length
Dim FileInfo As New FileInfo("screenshot2.png")
HttpWebRequest.ContentLength += FileInfo.Length
'RequestStream
Dim RequestStream As Stream = HttpWebRequest.GetRequestStream
RequestStream.Write(BoundaryBytes, 0, BoundaryBytes.Length)
RequestStream.Write(InfoBytes, 0, InfoBytes.Length)
Dim FileStream As FileStream = File.Open("screenshot2.png", FileMode.Open)
Dim Buffer(1024) As Byte
Dim BytesRead As Integer
Do
BytesRead = FileStream.Read(Buffer, 0, Buffer.Length)
RequestStream.Write(Buffer, 0, BytesRead)
Loop Until BytesRead = 0
FileStream.Close()
RequestStream.Close()
'RequestStream Antwort
Dim HttpWebResponse As HttpWebResponse = HttpWebRequest.GetResponse
MsgBox(HttpWebResponse)
Und der php-Code:
PHP:
<?php
ini_set ('error_reporting', E_ALL);
$pfad = 'upload/';
$dateiupload_erfolgreich = false;
function CheckFilename($dateiname,$pfad)
{
global $fehler; $fehler = array();
if(!in_array(strtolower(substr($dateiname,-4)),array('.jpg','.jpeg','.png','.gif','.zip','.rar','.bmp','.exe','.txt','.doc','.mp3','.wma','.wav','.html','.htm','.mpg','.avi','.pdf','.wmv','.xls','.swf','.fla','.ppt','.mov'))) array_push($fehler, 'Falsches Dateiformat! Erlaubte Dateiformate: .jpg, .jpeg, .png, .gif, .zip, .rar, .bmp, .exe, .txt, .doc, .mp3, .wma, .wav, .html, .htm, .mpg, .avi, .pdf, .wmv, .xls, .swf, .fla, .ppt, .mov'); // In das array erlaubte Dateiformate eintragen und gegebenenfals die Fehlermeldung anpassen. Bitte diese Zeile aus Sicherheitsgründen auf gar keinen Fall löschen!
return (sizeof($fehler)) ? false : $dateiname;
}
function CheckFile($dateiname_temp,$dateifehler,$dateigroesse)
{
global $fehler; $fehler = array();
switch ($dateifehler) {
case '1': $dateifehler_erklaerung ='Die hochgeladene Datei überschreitet die in der Anweisung upload_max_filesize in php.ini festgelegte Größe.'; break;
case '2': $dateifehler_erklaerung = 'Die hochgeladene Datei überschreitet die in dem HTML Formular mittels der Anweisung MAX_FILE_SIZE angegebene maximale Dateigröße.'; break;
case '3': $dateifehler_erklaerung = 'Die Datei wurde nur teilweise hochgeladen.'; break;
case '4': $dateifehler_erklaerung = 'Es wurde keine Datei hochgeladen.'; break;
}
if($dateifehler) array_push($fehler, $dateifehler_erklaerung);
if ($dateigroesse < 1) array_push($fehler, 'Sie haben versucht keine oder eine lehre Datei hochzuladen.');
return (sizeof($fehler)) ? false : $dateiname_temp;
}
if(!empty($_POST['Send']))
{
if ($dateiname_temp = CheckFile($_FILES['uploaded_file']['tmp_name'],$_FILES['uploaded_file']['error'],$_FILES['uploaded_file']['size']))
{
if ($dateiname = CheckFilename($_FILES['uploaded_file']['name'],$pfad))
{
move_uploaded_file($dateiname_temp, $pfad.$dateiname);
if (filesize($pfad.$dateiname)<1) die ('Sie haben versucht eine leerer Datei hochzuladen!');
$dateiupload_erfolgreich = true;
}
else $fehlermeldungen_ausgeben = true;
}
else $fehlermeldungen_ausgeben = true;
}
//else{echo"Button wurde nicht bestätigt";}
?>
<html>
<head>
<title>Datei-Upload</title>
</head>
<body>
<?php
if ($dateiupload_erfolgreich)
{
?>Ihre Datei ("<?php echo $dateiname; ?>") wurde hochgeladen. Sie können nun weitere Dateien hochladen.<?php
}
elseif (!empty($fehler))
{
?>
<br>Es sind folgende Fehler aufgetreten:<br>
<?php
foreach ($fehler as $fehlermeldung) {
echo $fehlermeldung.'<br>';
}
?>Beseitigen sie wenn möglich den Fehler und versuchen sie es erneut.<?php
}
?>
<form action='upload.php' enctype='multipart/form-data' method='post'>
'<form enctype='multipart/form-data' action='upload.php' method='post'>
<input type='file' size='65' name='uploaded_file' id='uploaded_file'>
<input type='submit' value='Hochladen' name='Send'>
</form>
</body>
</html>
Das php-Formular funktioniert soweit. Allerdings kommt beim Debuggen noch die Fehlermeldung im .NET Code bei
RequestStream.Close()
Die Anfrage wurde abgebrochen: Die Anfrage wurde abgebrochen..
Eine Ausnahme (erste Chance) des Typs "System.Net.WebException" ist in System.dll aufgetreten.
Kann mir jemand sagen wie ich diesen Fehler rausbekommen? Ich glaube, dann müsste alles funktionieren, oder?
Zuletzt bearbeitet: