带进度的ASP.net MVC文件上传到Amazon S3

本文关键字:Amazon S3 文件 MVC ASP net | 更新日期: 2023-09-27 17:49:53

大家好,

我有一个ASP.net MVC应用程序,需要上传文件到Amazon S3与进度。我发现了一个叫做Flajaxian的控件,它能很好地完成这项工作。问题是,现在我想将一行数据插入到跟踪上传的数据库中。如果查看下面的代码,该控件有一个FileUploader1_ConfirmUpload事件,该事件在上传完成后触发。Url。Action("Upload", "TracksController")不做我想要它做的事,也就是在TrackController Controller中触发Upload Action。这是我第一次使用MVC,所以我希望有一个简单的解决方案。

我最初有一个提交按钮来执行代码中的上传,如<div class="submitBtnDiv"><input type="submit" value="Submit" class="submitBtn" id="trackAdd" /></div>。但是现在上传是异步的所以我想做同样的postback

感谢每一个花时间阅读这篇文章的人,更要感谢那些试图解决这个问题的人。

 <div class="contentsAcc"><form id="form2" runat="server" style="width:400px">
                <script runat="server">
                    private void FileUploader1_FileNameDetermining(object sender, FileNameDeterminingEventArgs e)
                    {
                        e.FileName = SessionWrapper.PersonId.ToString() + "_" + e.FileName;
                    }
                </script>
                <script runat="server">
                    private void FileUploader1_ConfirmUpload(object sender, ConfirmUploadEventArgs e)
                    {
                        Url.Action("Upload", "TracksController");                            
                    }
                </script>
                    <fjx:FileUploader ID="FileUploader1" runat="server">
                        <Adapters>
                            <fjx:DirectAmazonUploader   OnFileNameDetermining="FileUploader1_FileNameDetermining" OnConfirmUpload="FileUploader1_ConfirmUpload"
                                AccessKey="WebConfig:AmazonAccessKey" 
                                SecretKey="WebConfig:AmazonSecretKey"
                                BucketName="tracksupload" />
                        </Adapters>
                    </fjx:FileUploader>
        </form></div>

好的,所以我试着改变一下我昨天的方法。而不是试图触发TracksController的动作,我想将该动作代码移动到Confirm_Upload事件。但现在我仍然需要获取文本框的值。因为MVC不记得状态,所以证明它是困难的。这里是文本框。它们与上面的代码位于同一页。

 <label for="BandName">Artist</label> 
       <%=Html.TextBox("Artists") %><%:Html.ValidationMessage("Artist","*")%>
        <div class="clearfix">
        </div>
        <label for="SongName">Song Title
        </label>
          <%=Html.TextBox("SongName") %><%:Html.ValidationMessage("SongName","*")%>
        <div class="clearfix">
        </div>

是否有可能拉文本框的值,并将其发送到服务器端发生的Confirm_Upload事件?如果不使用服务器代码,那么可能是JavaScript客户端?

我使用的上传控件是唯一一个做什么正是我想要的,但它是web表单,该网站是MVC。所以我在mvc页面上有一个web表单控件。我想使用MVC文本框值并将其传递给web表单控件进行处理。

带进度的ASP.net MVC文件上传到Amazon S3

Url。Action只是返回一个URI。你想重定向吗?

有时WebForms事件在MVC中工作,所以我想看看它是否像你需要重定向一样简单。


你的主要问题是你试图使用WebForms代码在什么看起来像MVC页面。这基本上是不兼容的,你需要自己连接javascript,或者直接在视图中使用其他javascript文件上传控件。

我不能推荐任何东西,因为我不熟悉S3上传。也许其他SO用户可以回答得更好。