2011-04-13 114 views
1

好日子,ASP.net MVC文件上传到亚马逊S3与进步

我有一个ASP.net MVC应用程序需要将文件上传到亚马逊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> 

好的,所以我试图改变我的方法有点从上面的昨天。我想将Action代码移动到Confirm_Upload事件中,而不是尝试触发TracksController的Action。但是现在我仍然需要获取文本框的值。因为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客户端?

使用上传控件是唯一一个激动人心的我想要的,但它是网页形式,该网站是MVC。所以我在一个mvc页面上有一个web表单控件。我想使用MVC文本框的值,并将其传递给Web窗体控件进行处理。

回答

1

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

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


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

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

+0

我原本有一个提交按钮来执行代码上传,如

。但现在上传是异步的,所以我想要做同样的回传 – 2011-04-13 14:43:58

+0

非常感谢jfar,如果我有15个声望点但是由于它有用而投票赞成, – 2011-04-13 15:10:40