道理相通,我简单分享下在.net MVC下的实装。
1.制作Model类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace RCRS.WebApp.LG.EM.Models
{
//----------------------------------------------------------------
/// <summary>
/// Import画面用
/// </summary>
//----------------------------------------------------------------
public class tmp_UploadFile
{
/// <summary></summary>
public HttpPostedFile FileName { get; set; }
}
}
2.实装controller里的对应方法,我这个处理逻辑比较复杂,懒得修改了,反正就这个意思
public virtual ActionResult UploadFile()
{
HttpPostedFile uploadedFile = Request.Files[\"FileName\"];
string message = \"アップロード失敗しました。\";
bool isUploaded = false;
string path = \"\";
string dateTimeNow = DateTime.Now.ToString(\"yyMMdd-hhmmss\");
string userName = User.Identity.GetUserName();
string uploadMsg = string.Empty;
if (uploadedFile != null && uploadedFile.ContentLength != 0)
{
string pathForSaving = Server.MapPath(\"~/App_Data/Uploaded/\");
try
{
if (BsnssBihin.IsExcel(uploadedFile.FileName))
{
path = System.IO.Path.Combine(pathForSaving, dateTimeNow + \"_\" + uploadedFile.FileName);
uploadedFile.SaveAs(path);
isUploaded = BsnssBihin.UploadBihinChange(path, userName, ref uploadMsg);
if (isUploaded)
{
message = \"アップロード成功しました!\" + \"\\n\" + uploadMsg;
Logger.Info(\"[成功]備品アップロード, \" + dateTimeNow + \", \" + \"[\" + userName + \"]\" + \"[\" + path + \"]\" + uploadMsg);
}
else
{
message = \"アップロード失敗しました。\" + \"\\n\" + uploadMsg;
Logger.Info(\"[失敗]備品アップロード, \" + dateTimeNow + \", \" + \"[\" + userName + \"]\" + \"[\"+path + \"]\" + uploadMsg);
}
}
else
{
message = \"ファイルの形式は不正です。\";
}
}
catch (Exception ex)
{
message = string.Format(\"失敗しました: {0}\", ex.Message);
Logger.Info(\"[失敗]備品アップロード: \" + ex.Message + dateTimeNow + \", \" + \"[\" + userName + \"]\" + \"[\" + path + \"]\");
}
}
return Json(new { isUploaded = isUploaded, message = message }, \"text/html\");
}
3.页面的实装
@model RCRS.WebApp.LG.EM.Models.tmp_UploadFile
<table align=\"center\" style=\"margin-bottom:200px\">
<tr>
<td>
<div style=\"width:470px\">
<input type=\"text\" id=\"tbx-file-path\" value=\"ファイルを選択してください\" readonly=\"readonly\" />
</div>
</td>
<td>
<div style=\"width: 60px\">
<span class=\"btn btn-primary fileinput-button\">
<span>選 択</span>
@Html.TextBoxFor(m => m.FileName, new { id = \"file-upload\", type = \"file\", accept = \"application/vnd.open formats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\" })
</span>
</div>
</td>
<td>
<div style=\"width:60px\">
<a class=\"btn btn-primary\" href=\"#\" id=\"hl-start-upload\">アップロード</a>
</div>
</td>
</tr>
</table>
<div id=\"loadingOver\" class=\"loadingOver\"></div>
<div id=\"dvloader\" class=\"dvloader\">
<span class=\"label label-info\" style=\"align-content:center\"> 処理中、少々お待ちください</span><br />
<br />
<img id=\"loadingGif\" src=\"../Content/img/loader.gif\" alt=\"\" />
</div>
@section s{
@ s.Render(\"~/bundles/jquery\")
@ s.Render(\"~/bundles/jqueryui\")
@ s.Render(\"~/bundles/jqueryval\")
@ s.Render(\"~/bundles/common\")
@ s.Render(\"~/bundles/fileupload\")
< type=\"text/ \">
var data_upload;
$(document).ready(function () {
\'use strict\';
$(\'#file-upload\').fileupload({
url: \'../Bihin/UploadFile\',
dataType: \'json\',
add: function (e, data) {
data_upload = data;
},
done: function (event, data) {
if (data.result.isUploaded) {
$(\"#tbx-file-path\").val(\"ファイルを選択してください\");
data_upload = \"\";
}
$(\"#dvloader\").css(\"display\", \"none\");
$(\"#loadingOver\").css(\"display\", \"none\");
alert(data.result.message);
},
fail: function (event, data) {
data_upload = \"\";
if (data.files[0].error) {
$(\"#dvloader\").css(\"display\", \"none\");
$(\"#loadingOver\").css(\"display\", \"none\");
alert(data.files[0].error);
}
}
});
});
$(\"#hl-start-upload\").on(\'click\', function () {
if (data_upload) {
$(\"#dvloader\").css(\"display\", \"block\");
$(\"#loadingOver\").css(\"display\", \"block\");
data_upload.submit();
}
return false;
});
$(\"#file-upload\").on(\'change\', function () {
$(\"#tbx-file-path\").val(this.files[0].name);
});
</ >
}
就是这个样子
还附赠了一个简易loding的实现
贴出CSS代码:
.dvloader {
display:none;
position:absolute;
top:40%;
left:40%;
width:20%;
height:20%;
z-index:1001;
text-align:center;
font-size:1.5em;
}
.loadingOver {
display:none;
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background-color:#f5f5f5;
opacity:0.5;
z-index:1000;
}
这里,多说一嘴:
关于input 的accept属性,这里只想读入Excel,所以
application/vnd.open formats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel
以上就是本文的全部内容,希望对大家的学习有所帮助。
继续阅读与本文标签相同的文章
下一篇 :
什么是神经网络?
-
他让我国芯片研究停滞13年,还骗走11亿研发资金,现状如何?
2026-05-14栏目: 教程
-
健乐教学机器人可开展的教学实训内容
2026-05-14栏目: 教程
-
5G套餐曝光遭“吐槽”,iphone11受追捧,导致苹果11销量比较高
2026-05-14栏目: 教程
-
为什么修电脑的叫自己不要杀毒和清理垃圾?
2026-05-14栏目: 教程
-
当水乡建筑遇上机器人,成就乌镇又一网红景点
2026-05-14栏目: 教程
