带进度的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表单控件进行处理。
Url。Action只是返回一个URI。你想重定向吗?
有时WebForms事件在MVC中工作,所以我想看看它是否像你需要重定向一样简单。
你的主要问题是你试图使用WebForms代码在什么看起来像MVC页面。这基本上是不兼容的,你需要自己连接javascript,或者直接在视图中使用其他javascript文件上传控件。
我不能推荐任何东西,因为我不熟悉S3上传。也许其他SO用户可以回答得更好。