我刚开始学习asp.net和c#。我在使用Post方法的表单中获取PDF文件的文件名时遇到问题。
<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,会显示以下错误:
指数超出范围。必须是非负数且小于 集合。参数名称:index
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.ArgumentOutOfRangeException:索引已经用完 范围。必须是非负的且小于的大小 采集。参数名称:index
但是在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解决方案。
答案 0 :(得分:0)
看起来你在Request.Files [0]
中没有任何东西这是错误发生的地方,它表示你没有上传任何内容。尝试写出Request.Files.Count,看看我的想法是否正确。
答案 1 :(得分:0)
Hejner 99%的权利。另一方面,您可以检查ASP FileUpload控件 - http://asp.net-tutorials.com/controls/file-upload-control/而不是使用纯HTML。我认为这会更容易。
答案 2 :(得分:0)
您不能在ASP.NET表单中包含HTML表单。这就是您Request.Files
为空的原因。在ASP.NET表单中使用ASP.NET文件上载控件,然后它就可以工作。