ravenDb に添付ファイルを保存しようとしています。ファイルが見つからないというエラーが発生します。
MVC ビュー:
<input type="file" name="file" id="Ids2" style="float:right"/>
ajax 呼び出しを介して、上記のコントロールで選択されたファイル名の値をコントローラー メソッドに渡します。コントローラー メソッドは、ファイル名を「アップロード」というカスタム メソッドに送信します。
public virtual string Upload(string fileName)
{
IDocumentSession session = GetCurrentDocumentSession();
var id = "upload/" + randomGen();
session.Advanced.DatabaseCommands.PutAttachment(id,null,
File.ReadAllBytes(fileName), optionalMetaData);
return id;
}
C:\ProgramFiles (x86).... ファイルが指定されていません。ビューで言ってみましょう - 私は C:/Doc1.txt をブラウズし、[追加] ボタンをクリックしてビューに他のフィールドを保存し、ファイル アップロード コントロールからファイル名/パスを取得します。
session.advance.databasecommands... 行でエラーが発生します
ファイル 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\Doc1.txt' が見つかりませんでした。
Doc1.txt ファイルを手動で上記の場所に移動すると、ravenDB によって添付ファイルが保存され、localhost:8080/static/upload/keyvalue から参照できます。
c:programfiles のデフォルトの場所のように見える場所からではなく、ユーザーが選択した場所から ravenDB にファイルを取得させるにはどうすればよいですか .....
編集:
function () {
var iFile = iContainer.find( '#Ids2' ).val();
var DataToSave = {
'Attachment' : iFile
};
var encodedData = $.toJSON(DataToSave);
$.ajax({
type: 'POST' ,
url: '/AttController/Attach' ,
data: encodedData,
contentType: 'application/json; charset=utf-8' ,
success: function (rc) {
if (rc.Success) {
// more javascript reroutes..business logic
}
else {
alert(rc.Message);
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert( 'Error attaching \n' + xhr.response);
}
});
};