ASP.net MVC загрузка файлов на Amazon S3 с прогрессом - PullRequest
1 голос
/ 13 апреля 2011

Добрый день,

У меня есть приложение ASP.net MVC, которое должно загружать файлы в Amazon S3 с прогрессом.Я нашел аккуратный контроль под названием Flajaxian, который делает работу довольно хорошо.Проблема в том, что теперь я хочу вставить строку данных в БД, которая отслеживает загрузки.Если вы посмотрите на код ниже, у элемента управления есть событие FileUploader1_ConfirmUpload, которое запускается после завершения загрузки.Url.Action («Upload», «TracksController») не выполняет то, что мне нужно, а именно запускает действие Upload в контроллере 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, я хочу переместить этот код действия в событие 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?

Используемый мной элемент управления загрузкой - единственный, который выполняет то, что я хочу, но это веб-формы, сайт MVC.Таким образом, у меня есть контроль веб-форм на странице MVC.Я хочу использовать значения текстового поля MVC и передать его в элемент управления веб-форм для обработки.

1 Ответ

1 голос
/ 13 апреля 2011

Url.Action просто возвращает URI.Вы пытаетесь перенаправить?

Иногда события WebForms работают в MVC, поэтому я посмотрел, было ли это так же просто, как вам нужно перенаправить.


Ваша главная проблема - вы пытаетесьиспользуйте код WebForms в том, что выглядит как страница MVC.Это в основном несовместимо, и вам нужно будет подключить javascript самостоятельно или использовать другой из множества элементов управления загрузкой файлов javascript прямо в вашем представлении.

Я не могу ничего рекомендовать, потому что я не знаком с загрузкой S3.Может быть, другой пользователь SO может ответить лучше.

...