方法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文件上传的更多相关文章

  1. axios+FormData文件上传

    axios+FormData文件上传 原理:FormData上传 创建一个FormData对象,将得到的文件流对象放在FormData内,然后使用axios上传 注意: 1.请求头设置 headers ...

  2. requests接口自动化7-Multi/form-data文件上传形式的post请求:files

    Multi/form-data文件上传形式的post请求:用files传参 fiddler里请求响应内容; 代码: import requests from requests_toolbelt imp ...

  3. multipart/form-data 文件上传表单中 传递参数无法获取的原因!

    1.什么是multipart/form-data 首先我们需要明白在html中的enctype属性, enctype:规定了form表单在发送到服务器时候编码方式.他有如下的三个值. ①applica ...

  4. Content-Type: multipart/form-data;文件上传利用

    当我们找到一个文件上传接口时,发现他的MIME类型检测为Content-Type: multipart/form-data;时,我们就可以尝试下面几种方法来绕过限制. ---------------- ...

  5. angular form-data文件上传

    前言:很久没更新博客,最近公司pc端技术选型用angular,这几天就赶鸭子上架,硬着头皮直接上手angular.其中有许多小坑陆陆续续踩起走.今天就遇到一个比较常见的问题:图片上传. 主题:图片上传 ...

  6. multipart/form-data文件上传

    form表单的enctype属性:规定了form表单数据在发送到服务器时候的编码方式 application/x-www-form-urlencoded:默认编码方式 multipart/form-d ...

  7. ajax 'Content-Type': 'multipart/form-data' ->文件上传

    'Content-Type': 'multipart/form-data' :指定传输数据为二进制数据,例如图片.mp3.文件

  8. jquery基于form-data文件上传

    1.html代码 <input type="file" name="myupdate" id="myupdate"> 2.jav ...

  9. 构建multipart/form-data实现文件上传

    构建multipart/form-data实现文件上传 通常文件上传都是通过form表单中的file控件,并将form中的content-type设置为multipart/form-data.现在我们 ...

随机推荐

  1. day3 三、基本数据类型和运算符

    一.多行注释和单行注释 """ 多行注释 多行注释 多行注释 """ # 单行注释 # print('hello world') # pri ...

  2. cmd打开E盘文件

    在命令行中输入你想要打开文件所在的磁盘,这里我以打开E:\homework\1.jpg来给大家做示范.在命令行中输入  E:   输入后按下enter键.就进入E盘中,效果如图所示!   如果你想要查 ...

  3. [No000012C]WPF(4/7)类型转换器和标记扩展[译]

    介绍 之前讨论了WPF的基础架构,然后逐步开始学习布局面板,转换,介绍了不同的控件,容器,UI转换等.在这篇文章中,我将讨论每个创建XAML应用前的开发人员应该了解的关于XAML最重要的东西. 标记扩 ...

  4. 【每日一题】 UVA - 1589 Xiangqi 函数+模拟 wa了两天

    题意:背景就是象棋, 题解:坑点1(wa的第一天):将军可以吃掉相邻的棋子,(然行列也写反了orz) 坑点2(wa的第二天):将军到马要反过来写,边界有误,并且第一次碰到的车才算(写到后来都忘了) # ...

  5. In abstract algebra, a congruence relation (or simply congruence) is an equivalence relation on an algebraic structure (such as a group, ring, or vector space) that is compatible with the structure in

    https://en.wikipedia.org/wiki/Congruence_relation In abstract algebra, a congruence relation (or sim ...

  6. U3d 入门

    环境搭建: 1.安装exe; 2.破解 ,百度

  7. Cmake入门资料

    1.http://blog.sina.com.cn/s/blog_3f3422fd010009vn.html 2.http://www.cnblogs.com/coderfenghc/tag/cmak ...

  8. WIN10登录时找不到Administrator用户

    前提:WIN才安装的系统登录时只看到admin用户看不到administrator用户 1. 按网上方法,进入[此电脑]--[管理]--[系统工具]--[本地用户和组]--[用户] 2. 双击打开Ad ...

  9. Android SDK 环境变量

    系统变量 PATH中加入 C:\Program Files (x86)\Android\android-sdk\platform-tools 和 C:\Program Files (x86)\Andr ...

  10. elasticsearch最大的条件数设置

    elasticsearch  bool条件查询里面条件的数量是有限制的,比如terms里面相等的值的数量个数 添加: indices.query.bool.max_clause_count: 1000 ...