asp c#获取PDF文件名

时间:2014-09-02 07:00:46

标签: c# asp.net

我刚开始学习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解决方案。

3 个答案:

答案 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文件上载控件,然后它就可以工作。