图片上传,网上有好多版本,今天也要做一个查了好多最终找到了一个uploadview 进行了一下修改
来看代码
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.uploadView.js"></script>
</head>
<body>
<div>
<div class="shangchuan">
<h4>示例</h4>
<div class="js_uploadBox" style="position: relative">
<div id="preview" class="js_showBox">
<img id="imghead" border="" src="http://static.neihanhongbao.com/highads/images/nologo.jpg" alt="上传图片" style="width:100px; height:100px" />
</div>
<input type="file" name="file" id="id" style="position: absolute; top: 0px; left:0px; height: 100px; filter: alpha(opacity:0); opacity: 0; width: 100px" onclick="Upload()">
</div>
<input type="hidden" id="hidTmp_ID" name="Tmp_ID" value="" />
</div>
</div>
</body>
</html>
<script type="text/javascript">
function Upload() {
$("#id").uploadView({
uploadBox: '.js_uploadBox',//设置上传框容器
showBox: '.js_showBox',//设置显示预览图片的容器
width: '', //预览图片的宽度,单位px
height: '', //预览图片的高度,单位px
allowType: ["gif", "jpeg", "jpg", "bmp", "png"], //允许上传图片的类型
maxSize:, //允许上传图片的最大尺寸,单位M
success: function (e) {
var l = $(".js_showBox img").attr("src");
$("#hidTmp_ID").val(l);
}
});
}
</script>
代码前台看起来很简单。
实现的效果也还可以,不过这个保存的是base64的图片,插入数据库的时候我们一般都是保存xxxx.jpg 故需要实现一个方法
/// <summary>
/// base64转图片
/// </summary>
/// <returns></returns>
public static string BaseToImg(string baseimg) {
byte[] bt = Convert.FromBase64String(baseimg.Replace("data:image/jpeg;base64,", ""));
string filepath = "ImgServer".GetAppsetting();
string sqlurl = @"" + DateTime.Now.ToString("yyyyMMdd") + "\\";
string sqlname = "" + DateTime.Now.ToString("yyyyMMddhhmmssmsfff") + ".jpg";
if (!System.IO.File.Exists(filepath + sqlurl)) {
System.IO.Directory.CreateDirectory(filepath + sqlurl);
System.IO.File.WriteAllBytes(filepath + sqlurl + sqlname, bt);
}
return sqlurl + sqlname;
}
这里我是根据日期对文件夹分组了,并且保存到数据库。避免单个文件太大
效果图类似这样
这个同样也适用于手机上
忘了附上下载链接:http://pan.baidu.com/s/1boMcO6j