.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.现在我们 ...
随机推荐
- .NET Core HttpClient调用腾讯云对象存储Web API的"ERROR_CGI_PARAM_NO_SUCH_OP"问题
开门见山地说一下问题的原因:调用 web api 时请求头中多了双引号,请求体中少了双引号. 腾讯云提供的对象存储(COS)C# SDK 是基于 .NET Framework 用 WebRequest ...
- MS14-064 漏洞测试入侵——20145301
MS14-064 漏洞测试入侵 Microsoft Windows OLE远程代码执行漏洞,OLE(对象链接与嵌入)是一种允许应用程序共享数据和功能的技术 执行摘要 此安全更新可解决 Microsof ...
- deepin中idea中文乱码解决
打开终端 命令: sudo su 输入密码: aptitude search uming 显示: root@terwer-PC:/home/terwer# aptitude search uming ...
- 转:web.xml 配置中classpath: 与classpath*:的区别
原文链接:web.xml 配置中classpath: 与classpath*:的区别 引用自:http://blog.csdn.net/wxwzy738/article/details/1698393 ...
- Java基础知识之集合
Collection集合 特点:长度可变,只能存储引用类型,可以存储不同的类型的元素 list 特点:元素有序(存储和取出的顺序一致),元素可以重复.list除了可以用迭代器循环遍历之外,因为其是有序 ...
- java 之程序中的http请求
背景 java程序中有时需要我们发起http级别的请求,例如抓数据或者第三方对接时,一般分为两种:一种是只需我们发起请求,还有一种是我们不但要发起请求,还要拿到请求后的数据来进行下一步处理 实现 针对 ...
- Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰
Javascript面向对象编程(二):构造函数的继承 作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生 ...
- 【JMeter】前置处理器
BeanShell PreProcessor 使用BeanShell在请求进行之前进行操作.语法使用与BeanShell Sampler是一样的.但可使用的内置变量稍有不同 JDBC Pre ...
- python-面向对象-13_文件
文件 目标 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 01. 文件的概念 1.1 文件的概念和作用 计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据 长期存储 ...
- finecms5采集接口下载
哪里有finecms采集接口可以下载?我们在用finecms建站时比较纠结的是要如何采集文章,finecms商城是有售卖采集插件,价格是50元,有些朋友感觉比较贵,不太愿意买,我们也是比较权衡了才很久 ...