.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.现在我们 ...
随机推荐
- 洛谷P1032 字串变换【bfs】
题目链接:https://www.luogu.org/problemnew/show/P1032 题意: 给定一个原字符串和目标字符串,以及几个字符串变换的规则. 问能否根据这几个规则在十步之内把原字 ...
- MapReduce 找出共同好友
这个前提需要注意:好友之间的关系是单向的,我的好友队列里有你,你的里面不一定有我.所以思考方式需要改变. 共同好友: 某两个人的好友队列里都有的人. 第一个mapper 和 reducer 简单说:找 ...
- Codeforces 1096D - Easy Problem - [DP]
题目链接:http://codeforces.com/problemset/problem/1096/D 题意: 给出一个小写字母组成的字符串,如果该字符串的某个子序列为 $hard$,就代表这个字符 ...
- Codeforces 180C - Letter - [简单DP]
题目链接:http://codeforces.com/problemset/problem/180/C 题意: 有一段字符串,包含大小写字母,每次可以将其中一个字母由大写变成小写,或者小写变成大写.要 ...
- export,import ,export default区别
export,import ,export default区别 一.export,import ,export default ES6模块主要有两个功能:export和import export用于对 ...
- Copycat - command
client.submit(new PutCommand("foo", "Hello world!")); ServerContext connection.h ...
- ios APP改名推送名字还是旧的
重启手机就行了 https://community.jiguang.cn/t/ios-app/14759
- MyBati__mapper 中取值(#{} 或${}) 以及 parameterType为(基本类型 或复杂类型)
参考资料: MyBatis学习笔记(三)——parameterType为基本类型时的使用方法 MyBatis的传入参数parameterType类型 1. MyBatis的传入参数parameterT ...
- day3_列表
一.列表 列表也通常被称为list 数组 array 1.列表定义 使用方括号([])即可 alist = [123,'abc','def',666,True] 空列表的定义:alist = [] 或 ...
- python内置函数,lambda表达式,文件读写
Lambda表达式: lambda是个匿名函数,自动加return返回 a={ 6:2,8:0, 1:4,-5:6,99:11,4:22} print(sorted(a.items()))#按key排 ...