MVC-4 文件上传成功消息

2023-12-30

我在上传文件后显示成功消息时遇到了一些问题。

我首先尝试使用 ViewBag.Message ,它运行良好,并在文件上传后显示成功消息,这就是我想要的。但后来我找不到一种方法,几秒钟后将该消息更改回:“选择要上传的文件!” ,以便用户了解他现在可以上传新文件。

我尝试实现一个 javascript 功能来处理成功消息。这样做的问题是,在文件上传完成之前就会显示成功消息,这不好,而且如果文件非常小,该消息只会显示一毫秒。

您对我如何微调这个有什么建议吗?我不确定我是否应该尝试使用 javascript 或 viewbag 或其他不同的东西进一步工作?

我正在寻找的是成功上传后显示大约 5 秒的成功消息,然后再次变回“选择要上传的文件消息”。

https://github.com/xoxotw/mvc_fileUploader https://github.com/xoxotw/mvc_fileUploader

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Mvc;

namespace Mvc_fileUploader.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            //ViewBag.Message = "Choose a file to upload !";
            return View("FileUpload");
        }

        [HttpPost]
        public ActionResult FileUpload(HttpPostedFileBase fileToUpload)
        {

            if (ModelState.IsValid)
            {
                if (fileToUpload != null && fileToUpload.ContentLength > (1024 * 1024 * 2000))  // 1MB limit
                {
                    ModelState.AddModelError("fileToUpload", "Your file is to large. Maximum size allowed is 1MB !");
                }

                else
                {
                    string fileName = Path.GetFileName(fileToUpload.FileName);
                    string directory = Server.MapPath("~/fileUploads/");

                    if (!Directory.Exists(directory))
                    {
                        Directory.CreateDirectory(directory);
                    }

                    string path = Path.Combine(directory, fileName);
                    fileToUpload.SaveAs(path);

                    ModelState.Clear();
                    //ViewBag.Message = "File uploaded successfully !";

                 }
            }

            return View("FileUpload");

        }



        public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}

文件上传视图:

@{
    ViewBag.Title = "FileUpload";
}

<h2>FileUpload</h2>

<h3>Upload a File:</h3>


@using (Html.BeginForm("FileUpload", "Home", FormMethod.Post, new {enctype = "multipart/form-data"}))
{ 
    @Html.ValidationSummary();
    <input type="file" name="fileToUpload" /><br />
    <input type="submit" onclick="successMessage()" name="Submit" value="upload" />  
    //@ViewBag.Message
    <span id="sM">Choose a file to upload !</span>
}


<script>
    function successMessage()
    {
        x = document.getElementById("sM");
        x.innerHTML = "File upload successful !";
    }
</script>

一些事情,

首先,你需要一个 Model 来表示上传成功,我们可以使用bool在您的实例中指出它。

将其添加到视图顶部:

@model bool

然后你可以这样做(保持你的观点不变):

@{
    ViewBag.Title = "FileUpload";
}

<h2>FileUpload</h2>

<h3>Upload a File:</h3>

@using (Html.BeginForm("FileUpload", "Home", FormMethod.Post, new {enctype = "multipart/form-data"}))
{ 
    @Html.ValidationSummary();
    <input type="file" name="fileToUpload" /><br />
    <input type="submit" onclick="successMessage()" name="Submit" value="upload" />  

    <span id="sM">Choose a file to upload !</span>
}

我们可以操纵sM在 JS 中取决于模型值

<script>

    @if(Model)
    {
        var x = document.getElementById("sM");
        x.innerHTML = "File upload successful !";
        setTimeout("revertSuccessMessage()", 5000);
    }

    function revertSuccessMessage()
    {
        var x = document.getElementById("sM");
        x.innerHTML = "Choose a file to upload !";
    }
</script>

然后在你的else在你的操作方法中声明,只需确保你返回true成功时,否则false。像这样

else
{
    string fileName = Path.GetFileName(fileToUpload.FileName);
    string directory = Server.MapPath("~/fileUploads/");

    if (!Directory.Exists(directory))
    {
        Directory.CreateDirectory(directory);
    }

    string path = Path.Combine(directory, fileName);
    fileToUpload.SaveAs(path);

    ModelState.Clear();

    return View("FileUpload", true);
}

return View("FileUpload", false);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC-4 文件上传成功消息 的相关文章

随机推荐

  • 当所有对象都属于同一类型时,我可以省略 PHP in_array() 中的 strict 参数吗?

    我使用 PHP 的in array https www php net manual en function in array php功能 以下 PHP 代码示例
  • 为什么 LINQ“应用到全部”方法被命名为 Select?

    当我阅读使用的代码时Select我认为 全选 当我阅读使用的代码时Map我认为 这适用于那 或 适用于所有人 我不可能是唯一一个感受到这个名字的人Select令人困惑 Map http en wikipedia org wiki Map 2
  • 如何让用户使用 control + + 进行放大,使用 control + - 进行缩小?

    下面我的代码的问题是在美国 英国键盘布局上 是用生成的shift 但是当用户同时使用 control 和 Shift 修饰符时 没有生成 这已经在 Mac 上测试过了 Keys onPressed if event modifiers Qt
  • 在 Sass 中,如何引用父选择器并排除任何祖父母?

    我有以下 sass 代码 class label color fff disabled color 333 哪个输出 disabled class label 有没有办法输出父选择器而不包含任何祖父母选择器 就像这样 disabled la
  • 间隔 5 分钟后递归启动 AsyncTask

    我想创建一个类的实例 它扩展Asynctask 并调用它的execute 每5分钟后进行一次方法 为此我尝试打电话Thread sleep 5 60 1000 in onPostExecute 方法 然后创建该类的新实例 代码如下 publ
  • 使用fplot函数时如何向量化?

    我正在使用 fplot 我也可以使用绘图 我刚刚找到了更多 fplot 的例子 我想绘制 y m x 形式的两条直线 其中 m V1 和 V2 V1 和 V2 是标量 下面的代码给了我一个错误 Matlab代码 fplot x V1 4 4
  • PHP 文件上传:mime 或基于扩展的验证?

    当我尝试处理文件上传时 是否应该根据文件 MIME 类型或文件扩展名运行验证 这两种文件验证方式的优缺点是什么 而且 我还应该担心其他安全问题吗 这些天我依赖 MIME 类型 但这篇文章中获得最多赞成票的答案 PHP中的文件上传问题 htt
  • 如何从 Visual Studio PTVS 中运行命令?

    我正在使用 Visual Studio 2012 和 PTVS 来处理 locustio 和 suds 我在 Visual Studio 中使用 virtualenv 设置了一个环境 并安装了 locustio suds 和所有相关的依赖项
  • zClip - ZeroClipboard.swf 已删除 - 需要新文件

    我在用着zClip http www steamdev com zclip 在我的网站上复制文本框中的一些内容 我一切正常 但现在 在不更改任何内容的情况下 它停止工作 原因是文件的主机零剪贴板 swf http zeroclipboard
  • Boost tribool 在 C++ 中导致从右到左的条件计算

    据我所知 C 在条件语句中总是从左到右计算 if A B C A首先会被评估 B第二 依此类推 然而 以下示例表现出一些奇怪的行为 include
  • 如何向基于 Visual Studio 的应用程序添加 C/C++ 语言服务?

    我正在尝试创建一个基于 Visual Studio shell 的特定于域的 IDE 我跟着走查 https learn microsoft com en us visualstudio extensibility shell walkth
  • Laravel Eloquent 选择 CASE?

    有没有在 PHP 和 Laravel Eloquent 方面有经验的人可以帮助我解决这个问题 我试图在 raw 方法中注入一个 CASE WHEN END 似乎完全被忽视了 现有的文档还没有 我尝试了几种不同的方法 但都没有成功 我正在努力
  • OpenMP 在 High Sierra LLVM 中可用吗?

    Apple 在 macOS 10 13 High Sierra 中提供的默认 LLVM 中 OpenMP 终于可用了吗 它已经在主 LLVM 中可用一年多了 问这个问题的另一种方式可能是新的 Apple LLVM 基于哪个版本的 LLVM
  • 发送方和接收方是否隐含与 MPI_BCAST 同步?

    当调用MPI BCAST时 是否有任何隐含的同步 例如 如果发送方进程要先于其他进程到达 MPI BCAST 它是否可以执行 BCAST 然后在没有任何确认的情况下继续 最近的一些测试代码如下 program test include mp
  • const 和非常量函数的重载如何工作?

    The STL充满了这样的定义 iterator begin const iterator begin const 由于返回值不参与重载决策 因此这里唯一的区别是函数是const 这是重载机制的一部分吗 编译器用于解析如下行的算法是什么 v
  • 哪个分布式缓存?

    我需要找到一种方法让两个应用程序可以使用相同的缓存 经过一些快速研究后 我们似乎需要一个分布式缓存来实现这一点 进一步谷歌搜索发现了许多解决方案 NCache http www alachisoft com ncache ncache ex
  • 如何在输入特定单词时提醒用户

    我是 Javascript 新手 正在创建我的第一个 Chrome 扩展 这实际上只是一个个人挑战 我想在用户在任何网站上键入某些单词时提醒他们 也许是 Google 或 Bing 上的搜索输入字段 或者也许是当他们输入 Facebook
  • 嵌入式 Linux 上的 QT5 eglfs(TI am355x EVM 入门套件)

    我刚刚为 ARM 交叉编译了 QT 5 2 1 并在 TI AM335x EVM 入门套件 板上使用它 我想使用eglfs平台 但不幸的是它在屏幕上显示了一些伪影 我只是制作了一个简单的程序来显示问题并捕获了我的屏幕的一些照片 该程序基本上
  • 真的很简单的Python HTTP代理吗? [复制]

    这个问题在这里已经有答案了 我到处寻找并发现了数百万个 python 代理服务器 但没有一个完全符合我的要求 我认为 s 一般来说 我对 python 有相当多的经验 但我对 HTTP 协议的深层秘密世界还很陌生 我认为可能有用的是一个非常
  • MVC-4 文件上传成功消息

    我在上传文件后显示成功消息时遇到了一些问题 我首先尝试使用 ViewBag Message 它运行良好 并在文件上传后显示成功消息 这就是我想要的 但后来我找不到一种方法 几秒钟后将该消息更改回 选择要上传的文件 以便用户了解他现在可以上传