我需要为用户提供一种方法,以便在我的Intranet Web应用程序上指定其计算机上文件的路径,并且ASP:FileUpload控件提供了一个很好的对话框来执行此操作,但它也会传输内容档案结束。由于我只需要文件路径而不是内容,还有另一种方法可以实现吗?
答案 0 :(得分:1)
您可以添加FileUpload控件。然后,在您的表单被提交之前,您可以将文件路径复制到一些隐藏的输入,并使用JavaScript删除FileUpload控件。
我从未尝试过,但它应该有效。但不知道目的。
答案 1 :(得分:1)
更新:以下代码将返回IE中的完整文件路径,但对于security reasons,firefox和chrome仅为您提供文件名。这可能是一个问题:)
我冒昧地实施了RaYell给出的解决方案。这是代码:
Default.aspx(标记):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SO._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script type="text/javascript">
function submitFormWithoutFile() {
var fileUpload = document.getElementById('<%= this.FileUpload1.ClientID %>');
var filePath = document.getElementById('<%= this.FilePath.ClientID %>');
filePath.value = fileUpload.value;
fileUpload.parentNode.removeChild(fileUpload);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:HiddenField ID="FilePath" runat="server" />
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Do it!" OnClientClick="submitFormWithoutFile();" />
</form>
</body>
</html>
Default.aspx.cs(代码隐藏)
namespace SO
{
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
// we have our file name but not the file
this.form1.Controls.Add(new Literal() { Text = this.FilePath.Value });
System.Diagnostics.Debug.Assert(this.FileUpload1.PostedFile == null);
}
}
}
}