2016-05-24 3 views
1

Ich habe eine C# Desktop-Anwendung, die in Visual Studio codiert ist, und eine Website, die 20 Felder von Informationen und ermöglicht der Benutzer eine PDF- oder eine DOCX-Datei anhängen. Ich habe einen XML-Parser, den ich geschrieben habe, der die Informationen eines einzelnen Benutzers aufnimmt, verarbeitet und für die C# -Anwendung verwendet. Die .pdf- und .docx-Dateien sind im selben Ordner wie die XML-Datei enthalten. Daher kann ich einfach den Pfad der .pdf- und .docx-Dateien aufrufen, um sie zu verwenden.Wie sende ich strukturierte Daten (XML) & eine .docx von einer Website POST zu aC# Desktop-App

Ich dachte, dass die XML mit einem PHP-Skript gemacht werden soll, das nur auf Knopfdruck ausgeführt wird, und speichert es dann in einer Position auf dem Server der Webseite. Das C# -Tool muss in der Lage sein, diesen Ordner zu erhalten und die XML-Datei zu erhalten. Wenn nötig, müssen Sie die .pdf- und .docx-Dateien herunterladen.

Ich habe nie Cross-Plattform kombiniert und dies ist ein Greenfield-Projekt, das ich die Selenium C# -Webautomatisierungsbibliothek verwenden, um Daten aus jedem XML zu automatisieren. Es würde die Verarbeitung des XML beenden, eine 8 Stunden lange Verarbeitungsschleife ausführen und dann bei Bedarf das nächste XML in eine Warteschlange aufnehmen.

Ich würde gerne verstehen, wie ich von einem Formular von einer Website zu einer C# -Anwendung gehen könnte. Das Zurückgeben einer Antwort ist nicht wirklich erforderlich, aber um zu wissen, in welcher Reihenfolge sich das XML-Dokument in der Warteschlange der zu verarbeitenden XML befindet, wird später daran gearbeitet.

SOAP/Restful Tech scheint eine gute Idee in diesem zu sein, da ich denke, ich würde das Rad hier nicht neu erfinden müssen, aber sie scheinen beide gültig zu sein.

Antwort

1

Wenn ich Sie richtig verstehe Sie eine Datei Cross-Plattform senden müssen, können Sie ein Byte-Stream durch Codierung senden und deconding es wie folgt:

C# Encode

Byte[] bytes = File.ReadAllBytes("c:\file.pdf"); 
String file = Convert.ToBase64String(bytes); 

C# Decode

Byte[] bytes = Convert.FromBase64String(b64Str); 
File.WriteAllBytes("c:\file.pdf", bytes); 

PHP Encode

$b64Doc = chunk_split(base64_encode(file_get_contents("c:\file.pdf"))); 

PHP Decode

$pdf_base64 = "base64string"; 
//Get File content from txt file 
$pdf_base64_handler = fopen($pdf_base64,'r'); 
$pdf_content = fread ($pdf_base64_handler,filesize($pdf_base64)); 
fclose ($pdf_base64_handler); 
//Decode pdf content 
$pdf_decoded = base64_decode ($pdf_content); 
//Write data back to pdf file 
$pdf = fopen ('"c:\file.pdf','w'); 
fwrite ($pdf,$pdf_decoded); 
//close output file 
fclose ($pdf); 
echo 'Done'; 
+0

Das scheint sehr gut, wenn ich die Website auf dem gleichen Computer bewirtet. Die Website, auf der das PHP-Skript läuft, befindet sich woanders, und ich könnte einfach auf die/private-Verzeichnisse von/root dieser Website zugreifen. Das scheint hervorragend, aber ich muss herausfinden, wie man ein Website-Formular in die C# verbindet. Ich denke, dass ich vermisse, wie der Dekodierer funktioniert, da ich denke, dass ich es brauche, um die Datei zu lesen. Vielen Dank – Jayizzle

Verwandte Themen