MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器...

本文详细介绍了ASP.NET MVC中实现文件上传、浏览和删除的步骤。包括在web.config中配置存储信息,js和C#中处理图片上传、读取和删除的方法,以及客户端验证和服务器端验证的实现。讲解了Request.Files和前端文件流转化为base64字符串的不同上传方式,并提供了实际代码示例。
摘要由CSDN通过智能技术生成

MVC图片上传、浏览、删除

 

1、存储配置信息

在web.config中,添加配置信息节点

<appSettings>
    <add key="UploadPath" value="D:\Uploads" />
</appSettings>

2、图片上传

html页面中

<div class="leftImage">
  <input type="file" id="picAjax" class="customButton"/>
  <span id="uploadInfo"></span>
  <input type="button" id="submitPic" class="customButton" value="上传" />
</div>
<div class="rightImage">
  <img id="selImg" src="" alt="" />
</div>

js中,选择图片事件

var picString = "";
$("#picAjax").change(function (e) {
  var file = e.delegateTarget.files[0];
  if (file.type == 'image/jpeg' || file.type == 'image/png') {
    $("#uploadInfo").text("图片格式正确,请点击提交按钮");
    var reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function (ret) {
      picString = reader.result;
      //预览图片
      $("#selImg").attr({ "src": picString });
    }
  }
  else {
    $("#uploadInfo").text("请上传jpg或png格式的图片!" );
  }
});

js中,上传图片事件

$("#submitPic").click(function () {
    if (picString != "") {
        $.ajax("../SavePicture", {
            type: "post",
            datatype: "json",
            data: {
                picString: picString,
                id: id
            },
            error: function () { },
            success: function (result) {
                if (result.suc == true) {
                    $("#uploadInfo").text("图片上传成功!");
                    $("#ImageList").empty();
                    ReadPicture();
                }
            }
        });
    }
});

C#中,保存图片

[HttpPost]
public ActionResult SavePicture(string picString,string id)
{
    var tmpArr = picString.Split(',');
    byte[] bytes = Convert.FromBase64String(tmpArr[1]);
    MemoryStream ms = new MemoryStream(bytes);
    ms.Write(bytes, 0, bytes.Length);
    var img = Image.FromStream(ms, true);

    var path = System.AppDomain.CurrentDomain.BaseDirectory;
    var imagesPath = System.IO.Path.Combine(path, @"Uploads\AgrCorporations\" + id + "\\");
    if (!System.IO.Directory.Exists(imagesPath))
        System.IO.Directory.CreateDirectory(imagesPath);
    string fileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo) + ".png";
    var bitImage = GetThumbnailImage(img,400,300);
    bitImage.Save(imagesPath + fileName);
    bool isOk = true;
    string msg = imagesPath + fileName;
    return Json(new { suc = isOk, msg = msg });
}

//图片压缩
public static Image GetThumbnailImage(Image srcImage, int width, int height)
{
    Image bitmap = new Bitmap(width, height);
    Graphics g = Graphics.FromImage(bitmap);

    //设置高质量插值法 
    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;

    //在指定位置并且按指定大小绘制原图片的指定部分 
    g.DrawImage(srcImage, new Rectangle(0, 0, width, width),
        new Rectangle(0, 0, srcImage.Width, srcImage.Height),
        GraphicsUnit.Pixel);

    return bitmap;
}

 

3、图片浏览和删除

html页面中

<div class="leftImage">
  @Html.ListBoxFor(model => model.ImageList, (List<SelectListItem>)ViewBag.imageList, new { @class = "multipleList" })
  <span id="deleteInfo"></span>
  <input type="button" id="deletePic" class="customButton" value="删除" />
</div>
<div class="rightImage">
  <img id="showImg" src="" alt="" />
</div>

js中,浏览和删除图片事件

@using Newtonsoft.Json;
var vData =@Html.Raw(JsonConvert.SerializeObject(ViewData));
var id = vData["id"];
var imgName = null;

$("#ImageList").on("change", function () {
    imgName = $("option:selected", this).val();
    var imgUrl = "../../Uploads/AgrCorporations/" + id + "/" + imgName;
    $("#showImg").attr({ "src": imgUrl });
});

$("#deletePic").click(function () {
    if (imgName == null) {
        $("#deleteInfo").text("没有选择任何图片!");
    }
    else {
        $.ajax("../DeletePicture", {
            type: "GET",
            datatype: "json",
            data: {
                id: id,
                imgName: imgName
            },
            error: function () { },
            success: function (result) {
                $("#deleteInfo").text(result.deleteInfo);
                $("#ImageList").empty();
                $("#showImg").attr({ "s
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值