【发布时间】:2012-02-08 03:39:10
【问题描述】:
我正在尝试为我的网站做一个简单的图片上传器。
想法是将图像文件发布到服务器,服务器返回包含 URL 的 json。然后我使用 JQuery 用 url 更新一个 p 标签。
这是我的操作方法:
[HttpPost]
public JsonResult UploadImage()
{
var image = WebImage.GetImageFromRequest();
var filename = image.FileName;
image.Save(Path.Combine("../Content/Images",filename));
return Json( new{ url= "http://www.example.com/Content/Images/"+filename)} );
}
这是我的带有脚本标签的视图代码。 (Jquery 链接在我的布局页面中)
上传图片
@using (Ajax.BeginForm("UploadImage", "Gtfo", FormMethod.Post, new AjaxOptions
{
HttpMethod = "post",
UpdateTargetId = "filePath",
InsertionMode = InsertionMode.InsertAfter,
OnSuccess = "updateFilePath"
}, new
{
enctype = "multipart/form-data"
}))
{
<input type="file" name="imageUploader" /><br />
<input type="submit" name="Submit" id="Submit" value="Upload" />
}
<script type="text/javascript">
function updateFilePath(result) {
$("#filePath").text(result.url);
}
</script>
图片正在上传并保存到服务器上。问题在于,一旦上传了图像,浏览器就会重定向到以纯文本形式显示 JSON 数据的页面。
编辑:我在互联网上做了一些阅读,我认为问题可能是我没有在我的布局页面中包含不显眼的 JavaScript。我已经将该脚本添加到我的布局页面中。现在,服务器没有将图像上传到我的服务器,而是在var filename = image.FileName; 处引发异常。原因是因为image 现在为空。在包含不显眼的 javascript 之前,这并没有发生。我不确定这是前进还是后退。
【问题讨论】:
-
查看过页面的外观和渲染后的效果?我看到您正在使用 MVC 助手。您的设置看起来是正确的,但在不知道助手将呈现什么的情况下很难准确地说出来。
-
它呈现单行文本阅读:{"url":"../Content/Images/padlock.jpg"}
标签: ajax json asp.net-mvc-3