繁体   English   中英

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

[英]ASP.net MVC file upload to Amazon S3 with progress

美好的一天,

我有一个ASP.net MVC应用程序,需要随着进度将文件上传到Amazon S3。 我发现一个名为Flajaxian的简洁控件可以很好地完成这项工作。 问题是,现在我想在数据库中插入一行数据来跟踪上传。 如果您查看下面的代码,则控件具有FileUploader1_ConfirmUpload事件,该事件在上传完成后触发。 Url.Action(“ Upload”,“ TracksController”)并没有执行我想要的操作,这在TrackController控制器中触发了上载操作。 这是我第一次使用MVC,因此希望有一个简单的解决方案。

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

感谢所有花时间阅读此内容的人,甚至感谢所有尝试解决此问题的人。

 <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的Action,而是希望将该Action代码移动到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窗体控件进行处理。

Url.Action只是返回一个URI。 您要重定向吗?

有时WebForms事件可以在MVC中工作,所以我正在查看它是否像您需要重定向那样简单。


您的主要问题是您试图在看起来像MVC页面的地方使用WebForms代码。 这大多是不兼容的,您需要自己连接JavaScript或直接在视图中使用许多javascript文件上传控件中的另一个。

我什么都不推荐,因为我不熟悉S3上传。 也许另一个SO用户可以回答得更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM