ここでは少し問題があります。WCF RESTサービスにパラメータを追加してファイルを送信
現在、私はGeneric Handlerを使用してファイルをサーバーにアップロードしていますが、ユーザーの名前と姓のような余分なデータがある場合は、別にそのデータを保存する必要があります。
名前と姓を保存してファイルのアップロードに失敗すると、データベースにファイルが関連付けられていないため、問題が発生します。
私は新しいWebメソッドを実装することを考えています。これはこれをすべて受け取り、失敗した場合はSQLトランザクションをロールバックします。
私がやりたいことは、Webメソッドを呼び出して、そのユーザーの名前と姓と写真のファイルを渡してからそこのデータベースで保存を実行することです。
これは私がしようとしたものです:
の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";
}
しかし、私は無残に失敗しています。
Webサービスが呼び出されますが、すべての変数はNULLです。
私が間違ったやり方をしている場合は、正しい方向に向けるようにしてください - どんな助けもありがとう!
(何かが明確でない場合は、尋ねると、私はより多くを説明してみましょうください)
'BodyStyle'を' Bare'に設定してみてください。 –
ちょうどそれを試みた - それでも変数値を取得していない:( –