TheRepatriate
Lt. Junior Grade
- Registriert
- Nov. 2008
- Beiträge
- 258
Hallo zusammen,
ich arbeite gerade an einer WCF Service Methode zum File Upload. Die Dateien sollen in einer AngularJS App selektiert und dann an einen WCF REST Service geschickt werden. Der WCF Service speichert dann ein paar "Metadaten" (Dateiname, Format...) in einer Datenbank und lädt die eigentliche Datei in einen Microsoft Azure Blob Storage Container. Das funktioniert bereits insofern, als ich PDF Dateien in den Azure Storage laden und wieder auslesen kann. Nun sollen aber auch Bilder hochgeladen werden können. Bei diesen scheitert es aber. Der eigentliche Stream scheint im Storage anzukommen, allerdings sind die Dateien (.jpg, .png) wenn man sie wieder herunterlädt beschädigt. Da ich mich wenig bis gar nicht mit dem Umwandeln von Streams in Images etc. auskenne, wollte ich euch mal fragen, ob ihr eventuell eine potentielle Fehlerquelle ausmachen könnt.
Hier einmal relevante Codeausschnitte:
In der AngularJS App gibt es einen Service für den Upload von Files. Das eigentliche selektieren passiert über die HTML5 File-API:
Die Dateien werden dann von WCF als Streams entgegengenommen (hier eine beispielhaftes Operation-Interface):
Wenn ich diesen Stream nun als File abspeichere, oder auch in den Blob-Storage lade ist die Datei beschädigt (es sei denn es ist eine PDF-, oder TXT-Datei). Ich habe bereits versucht den Stream zuerst in ein byte-Array, MemoryStream zu konvertieren oder auch zuerst ein Bitmap- bzw. Image-File daraus zu machen. Alles aber bisher ohne Erfolg.
Da ich mich mit Streams und dem umwandeln in Images nicht auskenne wollte ich mal Fragen, ob ihr vielleicht eine Lösungsmöglichkeit kennt bzw. wisst wo der Fehler liegen könnte.
Vielen Dank im Voraus
ich arbeite gerade an einer WCF Service Methode zum File Upload. Die Dateien sollen in einer AngularJS App selektiert und dann an einen WCF REST Service geschickt werden. Der WCF Service speichert dann ein paar "Metadaten" (Dateiname, Format...) in einer Datenbank und lädt die eigentliche Datei in einen Microsoft Azure Blob Storage Container. Das funktioniert bereits insofern, als ich PDF Dateien in den Azure Storage laden und wieder auslesen kann. Nun sollen aber auch Bilder hochgeladen werden können. Bei diesen scheitert es aber. Der eigentliche Stream scheint im Storage anzukommen, allerdings sind die Dateien (.jpg, .png) wenn man sie wieder herunterlädt beschädigt. Da ich mich wenig bis gar nicht mit dem Umwandeln von Streams in Images etc. auskenne, wollte ich euch mal fragen, ob ihr eventuell eine potentielle Fehlerquelle ausmachen könnt.
Hier einmal relevante Codeausschnitte:
In der AngularJS App gibt es einen Service für den Upload von Files. Das eigentliche selektieren passiert über die HTML5 File-API:
PHP:
srv.uploadFile = function(id, file){
return $http.post(DEV_ENV_CONFIG.BASE_SERVER_URL + '/xml' + '/fileUpload/' + file.name + '/' + id, file,
{withCredentials: true, headers: {'Content-Type': undefined }, transformRequest: angular.identity}).then(function(response){
});
};
PHP:
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "xml/fileUpload/{fileName}/{expenseId}")]
void FileUploadAsXml(string fileName, string expenseId, Stream Args);
Wenn ich diesen Stream nun als File abspeichere, oder auch in den Blob-Storage lade ist die Datei beschädigt (es sei denn es ist eine PDF-, oder TXT-Datei). Ich habe bereits versucht den Stream zuerst in ein byte-Array, MemoryStream zu konvertieren oder auch zuerst ein Bitmap- bzw. Image-File daraus zu machen. Alles aber bisher ohne Erfolg.
Da ich mich mit Streams und dem umwandeln in Images nicht auskenne wollte ich mal Fragen, ob ihr vielleicht eine Lösungsmöglichkeit kennt bzw. wisst wo der Fehler liegen könnte.
Vielen Dank im Voraus