在操作方法中保存图像,然后将 URL 返回给客户端
Saving image in ActionMethod then returning Url to client
我使用 Jquery ajax 上传图像,在我的 MVC ActionMethod 中,我有以下代码:
public JsonResult UploadPicture()
{
foreach (string inputTagName in Request.Files)
{
HttpPostedFileBase file = Request.Files[inputTagName];
if (file.ContentLength > 0)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("../Content/themes/base/imgs/")
, Path.GetFileName(file.FileName));
file.SaveAs(filePath);
return Json(ResolveServerUrl("/Content/themes/imgs/" + file.FileName ,false));
}
}
return Json("failed !");
}
public static string ResolveServerUrl(string serverUrl, bool forceHttps)
{
if (serverUrl.IndexOf("://") > -1)
return serverUrl;
string newUrl = serverUrl;
Uri originalUri = System.Web.HttpContext.Current.Request.Url;
newUrl = (forceHttps ? "https" : originalUri.Scheme) +
"://" + originalUri.Authority + newUrl;
return newUrl;
}
作为回报,jQuery成功方法我用src设置了这个图像,如下所示:
$('#imagePreview').attr('src', evt.target.responseText);
现在我可以看到图像已正确保存在服务器上,我可以看到图像的SRC现在已"http://localhost:62563/Content/themes/imgs/picture001.jpg"
但是我无法浏览到 IMG 设置后,图像也不会显示在页面中。 知道我可能做错了什么吗?
这是修复:
我将上传图片更改为:
public JsonResult UploadPicture()
{
foreach (string inputTagName in Request.Files)
{
HttpPostedFileBase file = Request.Files[inputTagName];
if (file.ContentLength > 0)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("~/Content/themes/imgs")
, Path.GetFileName(file.FileName));
file.SaveAs(filePath);
var path = Url.Content(Path.Combine("/Content/themes/imgs", file.FileName));// this the difference
return Json(path);
}
}
return Json("failed !");
}
在 JavaScript 中:
$('#imagePreview').attr('src', evt.target.responseText.replace('"','').replace('"',''));
相关文章:
- CKFinder 3为所选文件返回错误的URL
- Regex提取URL返回数组的一部分;未定义”;
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- 多个if语句根据URL返回css值
- Angularjs - url params:单击时返回 url 中的角度变量
- 如果URL中有任何字符串变体匹配,则返回true
- 如果URL's链接返回错误
- 如何使用 Backbone 读取通过同一 REST URL 返回的两个不同对象
- 从JavaScript中的文本URL返回可点击的URL
- 如何用php url返回的JSON对象填充表
- 如何解析从 url 返回的此 xml
- jQuery 拖放更改我的 URL - 返回 false 不起作用
- 在操作方法中保存图像,然后将 URL 返回给客户端
- 打开对话框,其中包含在使用 magnificPopup 构建的弹出窗口中跟随 URL 返回的结果
- 只显示精确匹配的打字.如何显示从远程url返回的所有数据
- jquery加载动态url返回整个页面,而不是选择器
- JS正则表达式从url返回字符串
- Nodejs - request.get(url)返回二进制数据在yahoo.com的情况下
- 两个不同的ajax url返回相同的数据
- 如何从谷歌脚本url返回json