ASP.NET MVC 文件上传

概要
最近在项目中,用到了另外一种上传文件方式;上传的文件类型可以是文件,也可以是图片。
而且适应前后端分离模式的开发。

前台 html 代码如下:

<form id="frm" method="post" enctype="multipart/form-data">
<table class="form">
   <tr>
       <td class="formValue" colspan="3">
           <input id="JXLJ" type="hidden" name="JXLJ" />
           <div style="width:220px;float:left;">
           <input id="file_upload" name="file_upload" type="file" multiple="true">
           </div>
       </td>
   </tr>
   <th class="formTitle"><a id="btn_upload"><i class="fa fa-upload"></i>点击上传</a></th>
</table>
</form>

JS代码如下:

<script>
function UploadPicture() {
    var formData = new FormData();
    formData.append("excel", document.getElementById("frm")[2].files[0]);
    //前台验证上传excel文件是否合法
    var path = $("#file_upload").val();
    if (path == "" && path == undefined && path == null) {
         $.modalAlert("图片选中,请重新选择上传图片!");
        return;
    } else {
        //获取文件后缀名
        var fileExtensionName = (path.substring(path.lastIndexOf(".") + 1, path.length)).toLocaleUpperCase();
        if ((fileExtensionName === "PNG" )|| (fileExtensionName==="JPG")|| (fileExtensionName==="JPEG")) {
        } else {
             $.modalAlert("抱歉!图片格式不正确,请选择格式为【.jpg,.jpeg,.png】的图片上传!");
            return;
        }
    }
    var sysUrl = "@Url.Content("~/HumanManage/QualificationCertificate/UploadingPicture")";
    $.ajax({
        url: sysUrl,
        type: 'post',
        data: formData,
        processData: false,//特别注意(不可少的配置项):不处理发送的数据
        contentType: false,//特别注意(不可少的配置项):不设置数据类型
        success: function (data) {
            if (data.flag) {
                $("#JXLJ").val(data.url);
                var url = data.url;
                document.getElementById("upload_img").src ="../../"+data.url;
            } else {
                 $.modalAlert(data.message);
            }
        }
    });
}
</script>

后端代码如下:

public ActionResult UploadingPicture()
{
    var file = HttpContext.Request.Files[0];
    string extensionName = Path.GetExtension(file.FileName);
    string fileFullName = GetRandFileName() + extensionName;
    string jsonUrl = "upfile/certificate/";
    string rootFilePath = AppDomain.CurrentDomain.BaseDirectory + jsonUrl;
    //检查目录是否存在:不存在则创建
    if (!Directory.Exists(rootFilePath))
    {
        Directory.CreateDirectory(rootFilePath);
    }
    rootFilePath = rootFilePath + fileFullName;
    bool bflag = true;
    string message = string.Empty;
    try
    {
        file.SaveAs(rootFilePath);
        jsonUrl = jsonUrl + fileFullName;
        message = "证书照片上传成功!";
    }
    catch
    {
        bflag = false;
        message = "证书照片上传异常!";
    }
    return Json(new { flag = bflag, url = jsonUrl, message = message }, JsonRequestBehavior.AllowGet);
}
/// 得到随机文件名字
/// </summary>
/// <returns></returns>
private string GetRandFileName()
{
    DateTime dt_1 = DateTime.Now;
    Random rd = new Random();
    string ls_filename = dt_1.ToString("yyyyMMddhhmmss");
    ls_filename = ls_filename + rd.Next(100, 999).ToString();
    return ls_filename;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值