.NET拾忆:FormData文件上传
方法1、FormData简单实现
后端:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web; namespace Mao.Common
{
public enum UploadFileType
{
Video,
Image
} public class FileUploadHelper
{
#region Fields private bool m_statu;
private string m_msg;
private string m_filename; #endregion #region 构造方法 /// <summary>
/// 初始化
/// </summary>
public FileUploadHelper()
{
m_statu = false;
m_msg = "";
m_filename = ""; } #endregion #region 公开属性 /// <summary>
/// 处理结果
/// </summary>
public bool Statu
{
get { return m_statu; }
}
public string Msg
{
get { return m_msg; }
} public string FileName
{
get { return m_filename; }
} #endregion /// <summary>
///
/// </summary>
/// <param name="file"></param>
/// <param name="path">Server.MapPath转换后的路径</param>
/// <returns></returns>
public void SaveFile(HttpPostedFileBase file, string path)
{
if (file != null && file.ContentLength > )
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string ext1 = Path.GetExtension(file.FileName); //格式判断
if (ext1 != ".gif" && ext1 != ".jpg" && ext1 != ".jpeg" && ext1 != ".png" && ext1 != ".mp4")
{
m_statu = false;
m_msg = "文件格式不正确!"; }
else
{
string name = DateTime.Now.ToString("yyyyMMddHHmmssff");
string ext = Path.GetExtension(file.FileName);
string downpath = path + name + ext;
string filepath = path + name + ext;
file.SaveAs(filepath);
m_statu = true;
m_msg = "上传成功!";
m_filename = name + ext;
}
}
else
{
m_statu = false;
m_msg = "未接收到文件!"; } }
/// <summary>
///
/// </summary>
/// <param name="file"></param>
/// <param name="type">限定文件类型</param>
/// <param name="path"></param>
public void SaveFile(HttpPostedFileBase file, UploadFileType type, string path)
{
string ext1 = Path.GetExtension(file.FileName); switch (type)
{
case UploadFileType.Image:
if (ext1 != ".gif" && ext1 != ".jpg" && ext1 != ".jpeg" && ext1 != ".png")
{
m_statu = false;
m_msg = "上传失败!文件格式不正确!"; }
else
{
m_statu = true;
m_msg = "上传成功!";
}
break;
case UploadFileType.Video:
if (ext1 != ".mp4")
{
m_statu = false;
m_msg = "上传失败!文件格式不正确!"; }
else
{
m_statu = true;
m_msg = "上传成功!";
}
break;
default:
m_statu = false;
m_msg = "上传失败!未知文件格式!";
break; } if (m_statu)
{
this.SaveFile(file, path); } } } }
类库Sample
public ActionResult Upload(HttpPostedFileBase file, string type)
{
string path = null;
UploadFileType fileType;
if (string.Equals(type.ToLower(), "video", StringComparison.OrdinalIgnoreCase))
{
fileType = UploadFileType.Video;
path = ConfigurationManager.AppSettings.Get("VideoUploadPath"); }
else
{
fileType = UploadFileType.Image;
path = ConfigurationManager.AppSettings.Get("ImagesUploadPath");
} FileUploadHelper filehelper = new FileUploadHelper(); filehelper.SaveFile(file, fileType, Server.MapPath(path));
return Json(new { statu = filehelper.Statu, msg = filehelper.Msg, filename = filehelper.FileName }); }
Controller
前端:
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data", id = "uploadForm" }))
{
<input type="file" style="height: 34px;" name="file" accept="image/png, image/jpeg, image/gif, image/jpg" />
<input type="hidden" name="type" value="image" />
}
……
function doUpload() {
var formData = new FormData($("#uploadForm")[]);
if (!$("input[type=file]").val()) {return;}
$.ajax({
url: '/upload/upload',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
if (!returndata.statu) {
alert(returndata.msg);
} else {
$("#ImagePath").val(returndata.filename);
}
},
error: function (returndata) {
alert(returndata);
}
});
}
方法2、
.NET拾忆:FormData文件上传的更多相关文章
- axios+FormData文件上传
axios+FormData文件上传 原理:FormData上传 创建一个FormData对象,将得到的文件流对象放在FormData内,然后使用axios上传 注意: 1.请求头设置 headers ...
- requests接口自动化7-Multi/form-data文件上传形式的post请求:files
Multi/form-data文件上传形式的post请求:用files传参 fiddler里请求响应内容; 代码: import requests from requests_toolbelt imp ...
- multipart/form-data 文件上传表单中 传递参数无法获取的原因!
1.什么是multipart/form-data 首先我们需要明白在html中的enctype属性, enctype:规定了form表单在发送到服务器时候编码方式.他有如下的三个值. ①applica ...
- Content-Type: multipart/form-data;文件上传利用
当我们找到一个文件上传接口时,发现他的MIME类型检测为Content-Type: multipart/form-data;时,我们就可以尝试下面几种方法来绕过限制. ---------------- ...
- angular form-data文件上传
前言:很久没更新博客,最近公司pc端技术选型用angular,这几天就赶鸭子上架,硬着头皮直接上手angular.其中有许多小坑陆陆续续踩起走.今天就遇到一个比较常见的问题:图片上传. 主题:图片上传 ...
- multipart/form-data文件上传
form表单的enctype属性:规定了form表单数据在发送到服务器时候的编码方式 application/x-www-form-urlencoded:默认编码方式 multipart/form-d ...
- ajax 'Content-Type': 'multipart/form-data' ->文件上传
'Content-Type': 'multipart/form-data' :指定传输数据为二进制数据,例如图片.mp3.文件
- jquery基于form-data文件上传
1.html代码 <input type="file" name="myupdate" id="myupdate"> 2.jav ...
- 构建multipart/form-data实现文件上传
构建multipart/form-data实现文件上传 通常文件上传都是通过form表单中的file控件,并将form中的content-type设置为multipart/form-data.现在我们 ...
随机推荐
- CentOS7(linux) 通过服务名查询安装目录
#ps aux|grep nginx root 1231 0.0 0.0 46336 956 ? Ss 04:21 0:00 nginx: master process /usr/sbin/nginx ...
- [No0000153]详解C# 迭代器【转】
迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式.简单来说,迭代器模式使得你能够获取到序列中的所有元素而 ...
- CSS 小技巧
CSS 小技巧 一.边框内圆角 我们在设计例如按钮等控件的时候,会遇到这样的设计:只有内侧有圆角,而边框或者描边的四个角还是保持直角的形状,用以下代码可以轻松的实现. #wrapper { width ...
- Mybatis 不同使用方式
前言 工作这么多年,ORM框架一直选择Mybatis框架. Mybatis的使用方式也一直在变,总体来说是越来越简单.写篇文章对各使用方式做个总结... 正文 一.Mybatis典型用法 1. 正常执 ...
- 安装和配置hive
1.上传hive.mysql.mysql driver到服务器/mnt目录下: [root@chavin mnt]# ll mysql-5.6.24-linux-glibc2.5-x86_64.tar ...
- Python:多线程
据廖雪峰老师的学习文档介绍,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程. Python的标准库提供了两个模块: ...
- netstat -s TCP连接失败 相关统计 解释
针对问题:TCP连接失败 分析:netstat -s输出中和连接失败相关的参数 202270382 invalid SYN cookies received --- 三次握手ack包,syncooki ...
- 内存管理 垃圾回收 C语言内存分配 垃圾回收3大算法 引用计数3个缺点
小结: 1.垃圾回收的本质:找到并回收不再被使用的内存空间: 2.标记清除方式和复制收集方式的对比: 3.复制收集方式的局部性优点: https://en.wikipedia.org/wiki/C_( ...
- android&sqlsever
http://blog.csdn.net/chaoyu168/article/details/51910601
- [dpdk] dpdk多线程任务调度
DPDK下的线程,叫做EAL线程. EAL线程默认是与CPU core一对一绑定的,这样的话,有一些实时性,计算量不高的任务独占CORE是一种浪费,大概找了如下几种解决方案. 1. dpdk seri ...