Я просто начинаю изучать 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.
Кажется, что у вас нет ничего в Request.Files [0]
Здесь происходит ошибка, говорится, что вы ничего не загрузили. Попробуйте написать Request.Files.Count, чтобы узнать, правильна ли моя идея.
Вы не можете иметь HTML-форму внутри формы ASP.NET. Это причина, по которой ваш Request.Files
пуст. Используйте элемент управления загрузкой ASP.NET в форме ASP.NET, тогда он будет работать.
File name: <%= Request.Files[0].FileName %>
работать после преобразования?
Хейнер прав 99%. С другой стороны, вы можете проверить элемент управления ASP FileUpload - http://asp.net-tutorials.com/controls/file-upload-control/ вместо использования чистого HTML. Думаю, было бы легче.
<asp:FileUpload>
управления<asp:FileUpload>
?