У меня здесь небольшая проблема.Отправить файл с дополнительными параметрами в службу WCF REST
В настоящее время я использую общий обработчик для загрузки файлов на сервер, но одна из проблем, которые у меня есть, заключается в том, что если у меня есть дополнительные данные, такие как имя пользователя и фамилия, я должен сделать (сохранить) это отдельно.
Это проблема, потому что, если я сохраню имя и фамилию и не удастся загрузить файл, у меня есть запись в моей базе данных, у которой нет файла, связанного с ним.
Итак, теперь я собираюсь внедрить новый веб-метод, который займет все это, и если этот метод завершится неудачно, он просто откатит транзакцию SQL.
Что я хочу сделать, это вызвать веб-метод и передать файл с именем пользователя и фамилией и фотографией, а затем выполнить сохранение в базе данных.
Это то, что я пробовал:
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";
}
Однако я терпеть неудачу ,
Веб-служба вызывается, но все переменные имеют значение NULL.
Если я собираюсь сделать это неправильно, укажите мне в правильном направлении - любая помощь будет оценена!
(Если что-то не ясно, пожалуйста, спросите, и я постараюсь объяснить более)
попробуйте установить 'BodyStyle' на' Bare'. –
Просто попробовал - он все еще не получает переменные значения :( –