博问中如何用AJAX方式上传图片地址上传后
最近在博问中看到一个问题,问在MVC中如何用AJAX方式上传图片,这里做了一个DEMO,详细解释一下。
本DEMO代码非常简单,就是一个页面上有一个上传图片按钮,点击后弹出一个层,在这个弹出层里上传图片js实现图片编辑器,然后把图片地址更新到页面上。在获得上传的图片地址后你可以做其他处理(如插入到文本编辑器中)。
Controller
<pre>public class ImageController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public JsonResult Upload(HttpPostedFileBase upImg)
{
string fileName = System.IO.Path.GetFileName(upImg.FileName);
string filePhysicalPath = Server.MapPath("~/upload/" + fileName);
string pic="", error="";
try
{
upImg.SaveAs(filePhysicalPath);
pic = "/upload/" + fileName;
}
catch (Exception ex)
{
error = ex.Message;
}
return Json(new
{
pic = pic,
error = error
});
}
re>
提示:这里上传到网站根目录的upload文件夹中,请根据自己的需要更改或添加这个目录。
View
Index.cshtml:
<pre>@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section HeadCss{
form{
border:1px solid #CCC;
border-radius:5px;
padding:10px;
margin:10px 0;
width:400px;
background:#EEE;
}
}
@section HeadScript{
$(function () {
$("#btn_show").bind("click", function () {
$("#form_upload").show();
var options = {
success: function (responseText, statusText, xhr, $form) {
var picPath = responseText.pic;
if (picPath == "") {
alert(responseText.error);
}
else {
$("#form_upload").hide();
$("#result").attr("src", picPath).show();
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(textStatus);
console.log(errorThrown);
}
};
$("#form_upload").[ajax][6]Form(options);
});
});
}
提示:在options的success方法中获取到上传的图片地址,你可以根据需要进行后续处理
_Layout.cshtml:
<pre>DOCTYPE html> @ViewBag.Title @RenderSection("HeadCss",required:false) @RenderSection("HeadScript",required:false) @RenderBody() </pre>
引用的几个文件
Site.css跟jquery-1.4.4.min.js就不说了,用VS创建MVC项目默认就有
jquery.form.js,这是一个jquery Form 插件,地址:
效果
打开页面,点击“上传图片”后选择一张图片
上传后效果图
PS:本文只是简单的示例js实现图片编辑器,很多细节没有处理,请使用者自己根据需要完善
发表评论
热门文章
Spimes主题专为博客、自媒体、资讯类的网站设计....
一款个人简历主题,可以简单搭建一下,具体也比较简单....
仿制主题,Typecho博客主题,昼夜双版设计,可....
用于作品展示、资源下载,行业垂直性网站、个人博客,....
尘集杂货铺和官网1t5-cn
11月11日
[已回复]
希望主题和播放器能支持SQLite数据库,AI能多个讯飞星火