我的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; }
}
}
答案 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>
答案 1 :(得分:0)
您为什么要修改请求?你无法改变它。
如果您想要阅读它并将其分配到局部变量(byte [])。
byte[] buffer = new byte[FileUpload1.PostedFile.InputStream.Length];
FileUpload1.PostedFile.InputStream
.Read(buffer, 0, FileUpload1.PostedFile.InputStream.Length);