私はいくつかのフォームからユーザーデータを収集する角度表示とコントローラーを持っています。 Angularコードのデータは、いくつかのC#クラスに渡されます。ユーザーデータは現在、IEnumerable <>オブジェクトとしてC#に取り込まれています。このコレクションには6つのプロパティ(メソッドなし)のカスタムクラスであるFormDataの型があります。すべてのユーザーデータは、IEnumerable <>オブジェクトを介してFormDataクラスの 'Data'プロパティに格納され、 'Data'プロパティは文字列です。 'Data'は文字列なので、C#を入力するファイルアップロードは実際のファイルではなく文字列として出力されます。AngularJSビュー/コントローラ経由でC#コードビハインドにファイルをアップロードするにはどうすればよいですか?
<div data-ng-controller="customFormController as formController" data-ng-init="formController.init(@Model.Form, '@Model.EmailResults', '@Model.EmailTo')">
<div data-ng-if="!formController.loading && !formController.submitted" mc-form data-on-submit="formController.submit(model, formData)" data-on-file-select="formController.fileSelect(e)">
<!--form fields are added dynamically via a separate set of Angular/C# controllers-->
</div>
</div>
ここでは、コントローラの一部です: はここに、ビューの
self.submit = function (model, formData) {
var deferred = $q.defer();
var formPostData = {
formId: self.formId,
data: formData,
emailData: self.emailData,
emailTo: self.emailTo,
saveData: true
};
customFormService.postData(formPostData).then(function (result) {
self.submitted = true;
deferred.resolve(result);
window.location.href = '#form-' + self.formId;
// push any files
if (typeof window.FormData !== 'undefined' && result) {
var formData = new FormData();
if (fileList && fileList.length) {
for (var f in fileList) {
if (fileList.hasOwnProperty(f)) {
formData.append('file', fileList[f]);
console.log('Files added to formData property');
}
}
customFormService.postFiles(result.data, formData);
console.log('files posted to customFormService');
}
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
//Here's the file-select method:
self.fileSelect = function (e) {
for (var x = 0; x < e.length; x++) {
fileList.push(e[x]);
}
}
申し訳ありませんが、それは長いったらしいました。 Angularコントローラを使用して実際のファイルオブジェクト(JSON文字列だけでなく)を取得し、そのオブジェクトにC#でアクセスする方法はありますか? ありがとう!
オンラインのリソースはたくさんあります。http://monox.mono-software.com/blog/post/Mono/233/Async-upload-using-angular-file-upload-directive-and-net-WebAPI-サービス/その一つです。ブラウザはHTTP経由でファイルを送信できるため、バイナリをJSONとして送信できないため、HTMLフォームが必要です。 –
@gabriel:ありがとう、私はこの記事を忘れてしまった。私は、FileReader()オブジェクトを使ってバイナリデータを取得し、バイナリ文字列として各ファイルを読み込んで、それらのファイルを角度で配列に送り出すことができました。 – SammyPayne