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