C#以FileUpload1.PostedFile编程方式获取和设置属性

时间:2013-11-21 12:47:02

标签: c# asp.net

我的asp.net移动应用程序上有一个文件上传控件。 我的要求是从浏览器访问本地文件夹路径;我需要以编程方式设置路径。 并且不允许用户浏览文件。

我的问题是,当我尝试访问文件上传控件属性名称时,如 - >发布文件 这不允许我设置程序化的值。这将允许当前只读 可以在文件上传控件上以编程方式设置值吗? 或者是否有其他方式使用类似Web用户控件公开 FileUpload1.PostedFile 属性?

经验:

public partial class TestWebUserControl : System.Web.UI.UserControl
{
public System.Web.HttpPostedFile PostedFileText
{            
get { return FileUpload1.PostedFile; }
//set { FileUpload1.PostedFile = value; }
}
}

2 个答案:

答案 0 :(得分:2)

您无法直接将值设置到文件帖子

在asp.net中回发后,没有提到的直接解决方案来设置文件上传控件的值。即使您尝试通过javascrip设置FileUpload控件的值,由于安全限制,这也无法正常工作。

您也不能在服务器上设置FileUpload值,因为FileName和其他属性是只读的。

溶液:

您可以使用:

label control to display the last selected file .
hiddenField Control to transfer the selected file from the client to server.

但你还需要记住最后发布的文件,因为如果你没有从FileUpload控件中选择一个文件然后回发,你会注意到FileUpload.postedFile值将会消失,所以你必须保存在某处发布文件。 请参阅此示例;

ASPX代码

<form id="form1" runat="server">  
       <asp:FileUpload ID="FileUpload1" runat="server" /> <br />  
        <asp:Label ID="lblCurrentFile" runat="server"></asp:Label><br />  
       <br />  
       <asp:Button ID="BtnSubmit" runat="server" Text="postBack" />  
       <br />  
       <asp:HiddenField ID="HiddenField1" runat="server" />  
</form>  

找到完整的解决方案|:http://www.nullskull.com/q/10140208/we-cant-set-value-of-file-upload-control-after-postback-in-aspnet.aspx

答案 1 :(得分:0)

您为什么要修改请求?你无法改变它。

如果您想要阅读它并将其分配到局部变量(byte [])。

byte[] buffer = new byte[FileUpload1.PostedFile.InputStream.Length];
FileUpload1.PostedFile.InputStream
 .Read(buffer, 0, FileUpload1.PostedFile.InputStream.Length);
相关问题