博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
另一种图片上传 jquery.fileupload.js
阅读量:4695 次
发布时间:2019-06-09

本文共 6673 字,大约阅读时间需要 22 分钟。

今天遇到另外一种上传图片方法

用jquery.fileupload.js

  <input type="file" name="file[]" multiple id="fileupload">

 

一个文件类型的元素

$("#fileupload").fileupload({

datatype:"json",

url: "/File/UploadFiles",

done: function (e, data) { //上传结束的操作 

if (data.result[0].result != "OK") //不成功的时候 弹出消息

{
alert(data.result[0].result);
}
else
{
$("#imgshow").attr("src", data.result[0].thumbnail_url); //成功的时候显示图片
}

}

})

 

上面的url 处理当选择完成图片后进行的上传操作

 public string path = "~/Files";

[HttpPost]        public ActionResult UploadFiles()        {            var r = new List
(); foreach (string file in Request.Files) { var statuses = new List
(); var headers = Request.Headers; if (string.IsNullOrEmpty(headers["X-File-Name"])) { UploadWholeFile(Request, statuses); } else { UploadPartialFile(headers["X-File-Name"], Request, statuses); } JsonResult result = Json(statuses); result.ContentType = "text/plain"; return result; } return Json(r); }

上面是uploadfiles方法。

ViewDataUploadFilesResult是定义的文件类
public class ViewDataUploadFilesResult    {        public string name { get; set; }        public int size { get; set; }        public string type { get; set; }        public string url { get; set; }        public string delete_url { get; set; }        public string thumbnail_url { get; set; }        public string delete_type { get; set; }        public string result { set; get; }    }

有名字尺寸类型等属性

UploadWholeFile上传整个文件
private void UploadWholeFile(HttpRequestBase request, List
statuses) { for (int i = 0; i < request.Files.Count; i++) { string result = ISValid(request.Files[i], "image"); if (result!= "OK") { statuses.Add(new ViewDataUploadFilesResult() { result=result}); } } if (statuses.Count > 0) return; for (int i = 0; i < request.Files.Count; i++) { var file = request.Files[i]; if (!Directory.Exists(StorageRoot)) { Directory.CreateDirectory(StorageRoot); } string fileExt = Path.GetExtension(file.FileName).ToLower(); string newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt; var fullPath = Path.Combine(StorageRoot, newFileName); file.SaveAs(fullPath); statuses.Add(new ViewDataUploadFilesResult() { result = "OK", name = newFileName, size = file.ContentLength, type = file.ContentType, url = Path.Combine(path, Path.GetFileName(newFileName)), delete_url = "/Home/Delete/" + newFileName, thumbnail_url = @"data:image/png;base64," + EncodeFile(fullPath), delete_type = "GET", }); } }
private void UploadPartialFile(string fileName, HttpRequestBase request, List
statuses) { if (request.Files.Count != 1) throw new HttpRequestValidationException("Attempt to upload chunked file containing more than one fragment per request"); var file = request.Files[0]; string result = ISValid(file, "image"); if (result != "OK") { statuses.Add(new ViewDataUploadFilesResult() { result = result }); } if (statuses.Count > 0) return; var inputStream = file.InputStream; if (!Directory.Exists(StorageRoot)) { Directory.CreateDirectory(StorageRoot); } string fileExt = Path.GetExtension(file.FileName).ToLower(); string newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt; var fullName = Path.Combine(StorageRoot, newFileName); using (var fs = new FileStream(fullName, FileMode.Append, FileAccess.Write)) { var buffer = new byte[1024]; var l = inputStream.Read(buffer, 0, 1024); while (l > 0) { fs.Write(buffer, 0, l); l = inputStream.Read(buffer, 0, 1024); } fs.Flush(); fs.Close(); } statuses.Add(new ViewDataUploadFilesResult() { result="OK", name = newFileName, size = file.ContentLength, type = file.ContentType, url = Path.Combine(path, Path.GetFileName(newFileName)), delete_url = "/Home/Delete/" + newFileName, thumbnail_url = @"data:image/png;base64," + EncodeFile(fullName), delete_type = "GET", }); }

上传部分文件

private string ISValid(HttpPostedFileBase file,string dirName)        {                       //定义允许上传的文件扩展名            Hashtable extTable = new Hashtable();            extTable.Add("image", "gif,jpg,jpeg,png,bmp");            extTable.Add("flash", "swf,flv");            extTable.Add("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");            extTable.Add("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");            //最大文件大小            int maxSize = 1000000;            String fileName = file.FileName;            String fileExt = Path.GetExtension(fileName).ToLower();            if (file.InputStream == null || file.InputStream.Length > maxSize)            {                return "上传文件大小超过限制。";            }            if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(((String)extTable[dirName]).Split(','), fileExt.Substring(1).ToLower()) == -1)            {                return "上传文件扩展名是不允许的扩展名。\n只允许" + ((String)extTable[dirName]) + "格式。";            }            return "OK";        }

isvalid验证上传文件是否合理

private string EncodeFile(string fileName)        {            return Convert.ToBase64String(System.IO.File.ReadAllBytes(fileName));        }
[HttpGet]        public void Delete(string id)        {            var filename = id;            var filePath = Path.Combine(Server.MapPath("~/Files"), filename);            if (System.IO.File.Exists(filePath))            {                System.IO.File.Delete(filePath);            }        }

 

 

转载于:https://www.cnblogs.com/jiangyou-lz/p/5707542.html

你可能感兴趣的文章
洛谷P1494 [国家集训队]小Z的袜子
查看>>
第七届蓝桥杯省赛--分小组
查看>>
MySQL5.5(cmake)简介、安装、应用、账户授权、还原、备份、还原
查看>>
使用PreparedStatement 查询一条数据 封装成一个学生的Student1对象
查看>>
Android dispatchTouchEvent
查看>>
CentOS上安装GlassFish4.0
查看>>
Period(sdut2476)
查看>>
返回一个二维整数数组中最大联通子数组的和
查看>>
个人作业Week2-代码复审
查看>>
JavaScript 获取页面参数
查看>>
常用函数积累
查看>>
Java泛型中E、T、K、V等的含义
查看>>
python_闭包_匿名函数
查看>>
深究AngularJS——自定义服务详解(factory、service、provider)
查看>>
《软件需求分析》阅读笔记2
查看>>
归并排序模板
查看>>
tooltips插件
查看>>
vim复制内容到系统剪贴板
查看>>
PHP 二叉查找树
查看>>
How to Run a Program as an Administrator in Windows 7
查看>>