Ich habe ein kleines Problem hier.Datei mit zusätzlichen Parametern an WCF REST senden Service
Derzeit verwende ich einen Generic Handler, um Dateien auf den Server hochzuladen, aber ein Problem, das ich habe, ist, dass ich, wenn ich zusätzliche Daten habe, den Namen und Nachnamen eines Benutzers tun muss.
Dies ist ein Problem, weil, wenn ich den Namen und Nachnamen speichern, und der Dateiupload fehlschlägt, habe ich einen Datensatz in meiner Datenbank, die keine Datei zugeordnet hat.
So, jetzt denke ich über die Implementierung einer neuen Web-Methode, die all dies übernehmen wird, und wenn diese Methode fehlschlägt, wird nur die SQL-Transaktion zurückgesetzt.
Ich möchte eine Webmethode aufrufen, die Datei mit dem Vor- und Nachnamen des Benutzers und dem Foto übergeben und dann das Speichern in der Datenbank ausführen.
Dies ist, was ich versucht habe:
jQuery:
$("#btnCreateRequest").click(function() {
var data = new FormData();
var photo = $("#fuPhoto")[0].files[0];
data.append("name", 'Fred');
data.append("surname", 'Moller');
data.append("photo", photo);
$.ajax({
type: "POST",
url: "Service.svc/CreateRequest",
dataType: "json",
//cache: false,
contentType: false,
processData: false,
data: data,
success: function (response2) {
//$("#PageArea").html(response2);
Popup(true, "success", "success", true);
},
error: function (response) {
Popup(true, "Error", JSON.stringify(response), true);
}
});
});
IService.cs
[OperationContract]
[WebInvoke(Method = "POST",
UriTemplate = "CreateRequest",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest)]
string CreateRequest();
Service.svc
public string CreateRequest()
{
var request = System.Web.HttpContext.Current.Request;
string name = request["name"];
string surname = request["surname"];
HttpPostedFile photo = request["photo"];
//Saving in database happens here, using above variables...
return "whatever";
}
Ich bin jedoch kläglich scheitert .
Der Webdienst wird aufgerufen, aber alle Variablen sind NULL.
Wenn ich das falsch mache, bitte zeigen Sie mir in die richtige Richtung - jede Hilfe wird geschätzt!
(Wenn etwas nicht klar ist, bitte fragen, und ich werde versuchen, mehr zu erklären)
versuchen Sie, den 'BodyStyle' auf' Bare' zu stellen. –
Habe es gerade versucht - es bekommt immer noch nicht die variablen Werte :( –