我正在尝试将附件保存在 ravenDb 中。我收到文件未找到错误。
MVC视图:
<input type="file" name="file" id="Ids2" style="float:right"/>
通过 ajax 调用,我将在上述控件中选择的文件名的值传递给控制器方法——这反过来将文件名发送给一个名为“Upload”的自定义方法
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 看到它
如何让 ravenDB 从用户选择的位置获取文件,而不是从它看起来像 c:programfiles 的默认位置......
编辑:
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);
}
});
};