私は Web 開発の初心者で、ファイルをデータベースに保存するときに問題があります。私はMVC 4、knockoutjs 2.3.0、jquery 2.03、およびamplifyjs 1.1.0を使用しています。
これが私がやりたい方法です。
私のアップロードページにはフォームがあります:
<form id="uploadForm" name="uploadForm" action="~/Administration/UploadReports" method="post" enctype="multipart/form-data">
<input required type="file" name="fileToUpload" id="fileToUpload" accept="html, image/jpeg">
<input type="submit" data-bind="click:submit" value="Ladda upp fil" />
<input type="reset" value="Avbryt" />
</form>
次に、私の knockoutViewModel には、以下のコードがあります。
this.submit = function (model, element) {
var test = $('#uploadForm')[0];
var formData = new FormData(test);
amplify.request({
resourceId: "uploadReport",
success: () => {
console.log("success");
},
error: () => {
console.log("error");
},
data: formData
});
};
これまでのところ、すべてが正常に機能しています。フォームのボタンを押すと、ここに行き着きます。しかし、amplifyjs は私の dataForm で何かをしていると思います... Amplify.request は次のように定義されています。
amplify.request.define('uploadReport', 'AJAX', {
url: '/Administration/UploadReports',
type: 'POST',
contentType: false,
processData: false,
cache: false
});
そして、私のコントローラーでは次のようになります。
[HttpPost]
public ActionResult UploadReports(HttpPostedFileBase fileToUpload)
{
//Update the list of files
var model = new AdministrationViewModel();
byte[] result;
using (var streamReader = new MemoryStream())
{
fileToUpload.InputStream.CopyTo(streamReader);
result = streamReader.ToArray();
}
model.BetFiles = FileInserter.InsertFile(fileToUpload.FileName, fileToUpload.ContentType, fileToUpload.ContentLength, result).Value;
return View("Reports", model);
}
問題が何であるかを理解するのを手伝ってくれる人はいますか?
よろしく、デビッド
ここに私が得るものがあります:
そして、これは私が期待したものです: