C#实现文件异步上传
//前台方法,包含弹出框确认以及文件选择
<input type="button" id="importxlsx" name="importxlsx" class="k-button" style="line-height: 20px" value="@T("Admin.Common.ImportFromExcel")" /> <div id="importexcel-window" style="display:none;">
@using (Html.BeginForm("ImportExcel", "ProductCarrefour", FormMethod.Post, new { name = "ImportExcelForm", enctype = "multipart/form-data" }))
{
<table style="text-align:left;">
@*<tr>
<td colspan="">
<em>@T("Admin.Catalog.Products.List.ImportFromExcelTip")</em>
</td>
</tr>*@
<tr>
<td>
@T("Admin.Common.ZIPFile"):
</td>
<td>
<input type="file" id="importexcelfile" name="importexcelfile" />
</td>
</tr>
<tr>
<td colspan="">
<strong>@T("Admin.Configuration.File.MaxLengthFor200")</strong>
<br />
<strong>@T("Admin.Configuration.Languages.XmlFile.Note1")</strong>
<br />
<strong>@T("Admin.Configuration.Languages.XmlFile.Note2")</strong>
</td>
</tr>
<tr>
<td colspan="">
<input type="button" class="k-button" onclick="checkIsExcel(this)" value="@T("Carrefour.Admin.Controllers.GoodsController.ImportZIP")" />
@*<input type="submit" id="ExcelInEnsure" style="display: none" />*@
@*<input type="submit" class="k-button" value="@T("Admin.Common.ImportFromExcel")" />*@
</td>
</tr>
</table>
}
</div>
<script type="text/javascript">
function checkIsExcel(v)
{
var ImportExcelForm = $("#ImportExcelForm"); var file = $("#importexcelfile").val(); if(file=="")
{
alert("請選擇文件");
return;
}
var strTemp = file.split(".");
var strCheck = strTemp[strTemp.length-]; if(strCheck.toUpperCase()=='ZIP'||strCheck.toUpperCase()=='zip')
{
//$("#ExcelInEnsure").trigger("click");
submitImportProduct();
}else
{
alert('上傳文件類型不對!');
return;
}
}
function submitImportProduct() {
debugger;
var formData = new FormData();
formData.append("importexcelfile", $("#importexcelfile")[].files[]);
$.ajax({
type: 'POST',
url: '@Url.Action("ImportExcel", "Product")',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function (data) {
return false;
}
});
$("#importexcel-window").data("kendoWindow").close();
alert("文件正在異步上傳,請在上傳記錄中查看上傳狀態。")
window.open("@storeLocation" + "admin/common/UploadLogList");
return false;
}
</script>
<script type="text/javascript">
$(document).ready(function () {
$("#importexcel").click(function (e) {
e.preventDefault();
var window = $("#importexcel-window");
if (!window.data("kendoWindow")) {
window.kendoWindow({
modal: true,
width: "400px",
title: "@T("Admin.Common.ImportFromZIP")",
actions: ["Close"]
});
}
window.data('kendoWindow').center().open();
});
});
</script>
//后台方法
[HttpPost]
public ActionResult ImportExcel()
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageProducts) && !_permissionService.Authorize(StandardPermissionProvider.ManageVendorProducts))
return AccessDeniedView(); var deleteZipFile = _settingService.GetSettingByKey("productimport.deleteproductzipfile", false);
string tempFileName = CommonHelper.GetDateTimeNow().ToString("yyyyMMddHHmmssfff");
var file = Request.Files["importexcelfile"];
var flagFile = Server.MapPath("~/Administration//Template//" + Path.GetFileNameWithoutExtension(file.FileName)); if (System.IO.File.Exists(flagFile))
{
ErrorNotification(string.Format(_localizationService.GetResource("Admin.Catalog.Products.FileOnUploading"), file.FileName));
return RedirectToAction("List");
}
FileStream myFs = new FileStream(flagFile, FileMode.Create);
myFs.Close(); string filePath = Server.MapPath("~/Administration//Template//" + tempFileName + ".zip");
string backupPath = Server.MapPath("~/Administration//BackupFiles//ProductImportZipFiles//");
string dir = Server.MapPath("~/Administration//Template//" + tempFileName + "");
try
{
file.SaveAs(filePath);
if (!Directory.Exists(Server.MapPath("~/Administration//Template//" + tempFileName + "")))
{
// Create the directory it does not exist.
Directory.CreateDirectory(Server.MapPath("~/Administration//Template//" + tempFileName + ""));
} //如果解压缩成功
if (CopyToAndUnzipFile(filePath, tempFileName))
{
DirectoryInfo dirinfo = new DirectoryInfo(Server.MapPath("~/Administration//Template//" + tempFileName + ""));
var afileinfo = dirinfo.GetFiles();
List<string> excelCount = (from fi in afileinfo where Path.GetExtension(fi.Name).ToUpper() == ".XLS" || Path.GetExtension(fi.Name).ToUpper() == ".XLSX" select fi.FullName).ToList();
if (excelCount.Count == ) //如果只存在一个excel文件
{ using (FileStream fileStream = new FileStream(excelCount[], FileMode.Open, FileAccess.Read))
{ _importManager.ImportProductsFromXlsxAsync(fileStream, Server.MapPath("~/Administration//Template//" + tempFileName + ""), file.FileName, filePath, deleteZipFile, flagFile, backupPath, dir); } return RedirectToAction("List");
//}
}
if (excelCount.Count > )
{
ErrorNotification(_localizationService.GetResource("Admin.Catalog.Products.ImportProductAndGoodsExistOneMoreExcel"));
}
else if (excelCount.Count == )
{
ErrorNotification(_localizationService.GetResource("Admin.Catalog.Products.ImportProductAndGoodsExistZeroExcel"));
}
} return RedirectToAction("List");
}
catch (Exception exc)
{ TempData["ErrorMsg"] = exc.Message; if (exc.InnerException != null)
{
string logError = string.Format("商品導入出錯,error:{0}", exc.InnerException.InnerException);
_logger.InsertLog(LogLevel.Error, logError, logError);
} return RedirectToAction("List");
}
}
C#实现文件异步上传的更多相关文章
- HTML5实现图片文件异步上传
原文:HTML5实现图片文件异步上传 利用HTML5的新特点做文件异步上传非常简单方便,本文主要展示JS部分,html结构.下面的代码并未使用第三发库,如果有参照,请注意一些未展现出来的代码片段.我这 ...
- 文件的上传(表单上传和ajax文件异步上传)
项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...
- js 文件异步上传 显示进度条 显示上传速度 预览文件
通常文件异步提交有几个关键 1.支持拖拽放入文件.2.限制文件格式.3.预览图片文件.4.上传进度,速度等,上传途中取消上传.5.数据与文件同时上传 现在开始笔记: 需要一个最基础的元素<inp ...
- 普通文件的上传(表单上传和ajax文件异步上传)
一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="mul ...
- MVC文件上传04-使用客户端jQuery-File-Upload插件和服务端Backload组件实现多文件异步上传
本篇使用客户端jQuery-File-Upload插件和服务端Badkload组件实现多文件异步上传.MVC文件上传相关兄弟篇: MVC文件上传01-使用jquery异步上传并客户端验证类型和大小 ...
- SpringMVC + AJAX 实现多文件异步上传
转自:https://www.jianshu.com/p/f3987f0f471f 今天,我就这个问题来写一篇如何用 SpringMVC + AJAX 实现的多文件异步上传功能.基本的代码还是沿用上篇 ...
- 文件的上传(1)(表单上传和ajax文件异步上传)
文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...
- 小程序使用 Promise.all 完成文件异步上传
小程序使用 Promise.all 完成文件异步上传 extends [微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 - Kindear - 博客园 (cnblogs.com)] ...
- 文件上传之——用SWF插件实现文件异步上传和头像截取
之前写过几篇文件上传,那些都不错.今天小编带领大家体会一种新的上传方法,及使用Flash插件实现文件上传. 使用Flash的好处就是可以解决浏览器兼容性问题.之前我写的一个快捷复制功能也是利用的Fla ...
- HTML5 文件异步上传 — h5uploader.js
原文地址:http://imziv.com/blog/article/read.htm?id=62 之前写过一篇H5异步文件上传的文章, 但是很多朋友看着我的这个教程还是出现很多问题,文章写的不是很好 ...
随机推荐
- 【算法笔记】B1018 锤子剪刀布
1018 锤子剪刀布 (20 分) 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. ...
- dotnet体系结构
一.C#与.NET的关系 1.粗略地説,.net是一种在Windows平台上的编程架构————一种API. 2.C#编译器专门用于.net,这表示用C#编写的所有代码总是使用.NET Framewor ...
- HDU 6356 (线段树-l,r 之间小于val 的变val+单点求值)
题目描述: 给你一个长度为n的最开始为0的数以及m个更新操作以及数据生成器参数X,Y,Z.每次操作,将由数据生成器生成出li,ri,vi.让你从区间[li,ri]中,将所有小于vi的数变为vi.最后让 ...
- C# 有关系统音量的操作
需要知道的 调音量是可以快捷键的,还可以用Winmm.dll,但是这个过于复杂了,还有左右声道,我们不需要这么复杂.还有个办法 https://stackoverflow.com/questions/ ...
- Java正则表达式-捕获组
private Set<String> getCodes(String s) { Set<String> resultSet = new HashSet<>(); ...
- [转] Mysql命令基础
[From] http://c.biancheng.net/cpp/u/mysql_ml/ 连接Mysql数据库 mysql命令格式: mysql -h主机地址 -u用户名 -p用户密码 1) 连接到 ...
- springLdap 操作ldap示例(增删改查)
转自:http://blog.csdn.net/sundenskyqq/article/details/9002440 这部分的示例网上的确有很多,但是个人在查找的过程中还是感到不够满意,所以就自己总 ...
- WPF 使用第三方ttf字体
1.将字体文件直接添加到项目中,注意:将文件的“属性”--“生成操作”设置为“Resource” 2.在Xaml中使用,text可以使用文字或直接使用unicode编码,XAML中使用Unicode编 ...
- shell 进阶变量的指定 declare
declare 设置 -r 只读 -i 设置整形 -a 数组 让指定的函数成为一个数组 -f 函数 如果在脚本中使用declare -f, 而不加任何参数的话, 那么将会列出这个脚本之前定义的所有函数 ...
- python 爬虫系列07-天气爬虫
看天气 import requests from bs4 import BeautifulSoup ALL_DATA = [] def parse_page(url): headers = { 'Us ...