asp c # получить имя файла PDF

1

Я просто начинаю изучать asp.net и С#. У меня возникла проблема с получением имени файла PDF файла в форме, использующей метод Post.

<div class="form" id="pnl_Form" style="display:block ;">
    <form id="form1"  method="post" enctype="multipart/form-data"  target="frmUpload"  action="/include/ajax.aspx?op=upload" >
        <div>
            Step 1. Choose a PDF to be converted: <i>(File limit <%=Global.MaxFileSize %> MB)</i>
            <div class="form-val">               
            <input type="file" id="file1" name="file1" class="txt" />
            </div>   
        </div>


        <div class="form-btn"> <a href="javascript:void()" class="btn-green" onclick="upload()"><span style="padding:0px 50px 0px 45px;">Send</span></a></div>
        <div class="clear"></div>

    </form> 

    <iframe id="frmUpload" name="frmUpload"  style="display:none"></iframe>
</div>

И PDF будет загружен и преобразован с использованием стороннего инструмента преобразования. Мне нужно показать пользователю имя загруженного PDF, когда конвертация будет завершена.

   <div class="form" id="pnl_Success">
    <div class="form-text">
        <h4>Conversion Successfully!</h4>

        <p>File name: <%= Request.Files[0].FileName %> </p>

        <div class="form-btn" style="margin-left:20%;"> <a href="/account/uploadlist.html" class="btn-green"><span style="padding:0px 20px 0px 15px;">Go to download</span></a></div>
        <br>       

    </div>
</div> 

Но используя Request.Files [0].FileName, отображается следующая ошибка:

Индекс был вне пределов досягаемости. Должен быть неотрицательным и меньше размера коллекции. Имя параметра: индекс

Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.ArgumentOutOfRangeException: Индекс был вне допустимого диапазона. Должен быть неотрицательным и меньше размера коллекции. Имя параметра: индекс

Однако в коде cs также используется Request.Files [0], и файл PDF может быть успешно загружен.

    private void Upload()
{

    int fileId = 0;
    int result = 0;
    HttpPostedFile postFile = Request.Files[0];


    //user information
    Account account = new Account();

    result = widget.Upload( postFile, out fileId) ; 

    if (result == (int)FileStatus.UploadSuccess)
        Response.Write("<script language='javascript'>parent.convertProgress('" + fileId + "')</script>");
    else
        Response.Write("<script language='javascript'>parent.failUpload(" + fileId + "," + result + ");</script>");
}

Я также попытался использовать статическую переменную, чтобы получить значение postFile.FileName и вызвать значение с помощью asp на веб-странице, но не работает тоже?

В классе есть:

        public static string showName;

В функции upload() есть:

        showName = postFile.FileName;

Наконец, получите имя файла, используя Javascript, но я все еще ищу решение ASP.

  • 2
    Если вы используете asp.net, почему бы не использовать <asp:FileUpload> управления <asp:FileUpload> ?
  • 0
    Я попытаюсь....
Теги:

3 ответа

0
Лучший ответ

Кажется, что у вас нет ничего в Request.Files [0]

Здесь происходит ошибка, говорится, что вы ничего не загрузили. Попробуйте написать Request.Files.Count, чтобы узнать, правильна ли моя идея.

  • 0
    Это 0. Я не понимаю, файл уже загружен, и преобразование завершено, почему Request.Files ничего не получает?
  • 0
    Вы перенаправляете на новую страницу после успешного преобразования? В этом случае вы не отправляете файлы вместе, следовательно, Request.Files.Count будет 0
Показать ещё 1 комментарий
0

Вы не можете иметь HTML-форму внутри формы ASP.NET. Это причина, по которой ваш Request.Files пуст. Используйте элемент управления загрузкой ASP.NET в форме ASP.NET, тогда он будет работать.

  • 0
    Но Request.Files работает в файле cs, почему он не работает на странице aspx?
  • 0
    Покажите нам больше кода, пожалуйста, чтобы мы могли видеть, какая часть кода происходит из какого файла и когда должна быть выполнена. Почему File name: <%= Request.Files[0].FileName %> работать после преобразования?
0

Хейнер прав 99%. С другой стороны, вы можете проверить элемент управления ASP FileUpload - http://asp.net-tutorials.com/controls/file-upload-control/ вместо использования чистого HTML. Думаю, было бы легче.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню