7

我正在修改现有的 ASP.NET 项目。原作者错误地尝试通过将其可见性设置为隐藏并仅创建两个自定义样式的浏览和保存按钮来创建样式化的 asp:FileUpload。

出于安全原因,IE 不允许这样做。我的策略是尝试使用 type="file" 的输入标签,例如这个例子。因此,如果我设置输入,例如<input type="file" ID="inputFile" /> 如何在后面的代码中访问/保存文件,inputFile.SaveAs("someFile.txt");?另外(在后面的代码中)我可以做类似的事情inputFile.HasFile还是有其他类似的东西?

根据建议,我正在尝试以下方法:

             <td>
                Enabled: <asp:CheckBox ID="CheckBox2" runat="server" />    &nbsp;&nbsp;
                <div id="testFileUploader">>
                   <input type="file" id="browserHidden" runat="server" />
                   <div id="browserVisible"><input type="text" id="fileField" /></div>
                </div>
             </td>
4

4 回答 4

14

因此,您可以根据ASPX 页面的GUIDat 为将来的上传生成一个随机文件名:CodeBehind

HttpPostedFile filePosted = Request.Files["uploadFieldNameFromHTML"];

if (filePosted != null && filePosted.ContentLength > 0)
{
    string fileNameApplication = System.IO.Path.GetFileName(filePosted.FileName);
    string fileExtensionApplication = System.IO.Path.GetExtension(fileNameApplication);

    // generating a random guid for a new file at server for the uploaded file
    string newFile = Guid.NewGuid().ToString() + fileExtensionApplication;
    // getting a valid server path to save
    string filePath = System.IO.Path.Combine(Server.MapPath("uploads"), newFile);

    if (fileNameApplication != String.Empty)
    {
        filePosted.SaveAs(filePath);
    }
}

Request.Files["uploadFieldNameFromHTML"]此处设置 HTML 代码中的 ID:

<input type='file' id='...' />

另外,不要忘记runat="server"在 ASPX 页面的主窗体中定义,最好在主窗体中设置,不要忘记enctype="multipart/form-data"参数<form>

<body>
    <form enctype="multipart/form-data" id="form1" runat="server">
        <input type='file' id='uploadFieldNameFromHTML' />
...
于 2013-04-25T15:15:31.207 回答
3

将 runat="server" 添加到对象。这样,它将像任何 asp:FileUpload 控件一样在 CodeBehid 上工作。

于 2013-04-25T14:43:40.410 回答
1

如评论所述,您可以将 runat="server" 添加到输入文件标记中。

另一方面,已经有一篇关于你所要求的类似帖子。看一下这个:

在 ASP.net 中上传文件而不使用 FileUpload 服务器控件

希望这有帮助

干杯!

于 2013-04-25T15:11:05.757 回答
0
if(fileUrunResim.HasFile)
    fileUrunResim.SaveAs(MapPath("~/Images/" + fileUrunResim.FileName));


**if you unique filename,**

string extension = Path.GetExtension(fileUrunResim.FileName);

string fileName = Guid.NewGuid().ToString().Substring(0, 25) + extension ;


if(fileUrunResim.HasFile)
    fileUrunResim.SaveAs(MapPath("~/Images/" + filename ));
于 2013-04-25T14:48:00.137 回答