C-sharp ZIP-Ordner an PHP senden
Hallo ihr Administratoren,
ich habe nun eine PHP Datei gebastelt, die einen ZIP auf einen Server lädt. Ich habe den ZIP über ein HTML Formular hochgeladen. Jetzt möchte ich, dass das C# Programm einen ZIP zu dem PHP Script sendet.
PHP:
C#:
Wobei path der Pfad zu der lokalen ZIP Datei ist. Aber es funktioniert nicht, weil ich denke mal noch den Parameter "zip-file" brauche. Wie löse ich das Problem?
ich habe nun eine PHP Datei gebastelt, die einen ZIP auf einen Server lädt. Ich habe den ZIP über ein HTML Formular hochgeladen. Jetzt möchte ich, dass das C# Programm einen ZIP zu dem PHP Script sendet.
PHP:
if($_FILES['zip-file']['name'] != '') { ....
C#:
string URL = "http://.......server.php";
WebClient webClient = new WebClient();
webClient.Headers.Add("Content-Type", "binary/octet-stream");
byte result = webClient.UploadFile(URL, "POST", path);
string responsefromserver = Encoding.UTF8.GetString(result);
MessageBox.Show(responsefromserver);
Wobei path der Pfad zu der lokalen ZIP Datei ist. Aber es funktioniert nicht, weil ich denke mal noch den Parameter "zip-file" brauche. Wie löse ich das Problem?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 337826
Url: https://administrator.de/contentid/337826
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
10 Kommentare
Neuester Kommentar
Der Webclient ist dafür eine suboptimale Wahl, besser du machst das mit einem WebRequest
Siehe: http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequ ...
Wenn du aber sowieso nur mit c# hoch lädst, brauchst du das mit dem Form-Data gedöns im PHP-Skript nicht, dort reicht dann ein
Um an die Raw-Daten der mit POST hochgeladenen Datei zu kommen.
Gruß
Siehe: http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequ ...
Wenn du aber sowieso nur mit c# hoch lädst, brauchst du das mit dem Form-Data gedöns im PHP-Skript nicht, dort reicht dann ein
$postdata = file_get_contents("php://input");
Gruß
Nee, das ist ja wieder alles miteinander vermixt, das kann ja nich, ich hab ja extra gesagt nutze den WebRequest damit kannst du alles wesentlich genauer steuern.
Ganz rudimentäres Beispiel ohne jegliches Error-Handling
c#
PHP
Ganz rudimentäres Beispiel ohne jegliches Error-Handling
c#
using System;
using System.Windows.Forms;
using System.Net;
using System.IO;
namespace HttpPostData {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"http://localhost/upload/raw.php");
request.Method = "POST";
request.ContentType = "application/octet-stream";
Byte data = File.ReadAllBytes(@"c:\Pfad\demo.zip");
Stream rs = request.GetRequestStream();
rs.Write(data, 0, data.Length);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
MessageBox.Show(reader.ReadToEnd());
reader.Close();
rs.Close();
}
}
}
PHP
<?php
$data = file_get_contents("php://input");
if ($data){
file_put_contents("my.zip",$data);
echo "File saved as my.zip.";
}else{
echo "No data given.";
}
?>
Im aktuellen Verzeichnes des PHP-Skripts, siehst du ja hier:
file_put_contents("my.zip",$data);
Davor muss ich dann noch eine Abfrage einbauen, ob der Ordner bereits vorhanden ist.
Sicher:if (!file_exists("/folder/path")){
mkdir("/folder/path");
}
Jepp. Ein Pfad mit Dateiname. Les doch bitte auch mal die Doku, Danke.
http://php.net/manual/de/ziparchive.extractto.php
wenn ich die wo anders speichern möchte oder wie?
Pfad und Dateiname angeben fertig!Und der ZIP wird richtig als Ordner behandelt und nicht als Datei?
Natürlich als Datei, was dachtest du denn, das er seine Glaskugel zückt und das selber entpackt? Das musst du natürlich selbst noch machen, min Jung!http://php.net/manual/de/ziparchive.extractto.php
Zitat von @Yanmai:
Vielen Dank,
jetzt muss ich dieser Datei aber noch einen Wert über POST mitgeben. Wie mache ich das? Also POST und den ZIP
Die oben gezeigte Methode ist dafür nicht geeignet, aber genau deswegen habe ich dir ja oben schon den Link gegeben der zeigt wie du Multipart-Form Daten zusammen baust und übermittelstVielen Dank,
jetzt muss ich dieser Datei aber noch einen Wert über POST mitgeben. Wie mache ich das? Also POST und den ZIP
http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequ ...
Damit du es so verarbeiten kannst wie wenn ein normales Formular übermittelt worden wäre.