【问题标题】:perform file upload without display upload control in ASP.NET在 ASP.NET 中执行文件上传而不显示上传控件
【发布时间】:2012-09-06 02:40:52
【问题描述】:

我正在使用 VS2010,C# 开发一个 ASP.NET Web 应用程序,我想在我的用户单击超链接(或标签,它没有区别)时显示文件上传控件,然后上传操作应该执行,我使用上传控件没有问题,但目前我有一个不可见的上传控件,它在我的超链接 onclick 函数中使用 JavaScript 显示它,上传控件显示但我不知道如何获取上传的文件,如何我应该执行此操作吗?我想在我的用户单击标签或超链接时显示上传文件对话框,然后他们可以选择他们的文件并且应该上传文件,最后我应该能够在服务器端使用这个文件(我要去获取文件流并将其存储在 SQL 中),我有什么选择?查询?阿贾克斯? JavaScript?还是别的什么?

我的 JavaScript 函数:

function OpenFile()
{
document.getElementById("<%=fu.ClientID%>").style.display="";
var result = document.getElementById("<%=fu.ClientID%>").click();
document.getElementById("<%=fu.ClientID%>").style.display="none";
return false;
}

还有我的标记:

<asp:FileUpload ..... style="display:none;"....>
    <ASP:hyperlink onclick="OpenFile();"...../>

【问题讨论】:

  • 隐藏控件并在点击时显示它应该可以工作。显示您的代码。
  • 是的,会显示上传对话框,但我不知道如何获取上传的文件信息
  • 您的问题是关于如何使用asp.net文件上传控件?
  • 我已经在我的问题中插入了我的代码,我知道如何使用文件上传控件上传文件,而是我想知道在这种情况下如何获取我上传的文件,当我使用文件上传时正常控制,我使用提交按钮执行回发,并将上传的文件插入 SQL,但在这里我不知道如何获取发布的文件,我应该对我的 JavaScript 函数进行回发吗?

标签: asp.net file-upload


【解决方案1】:

选择文件并执行PostBack后,您可以按如下方式访问该文件

<asp:FileUpload ID="FileUpload1" ..... style="display:none;"....>

使用PostedFile访问底层发布文件

    var fileLen = FileUpload1.PostedFile.ContentLength;
    Byte[] Input = new Byte[fileLen];
    myStream = FileUpload1.FileContent;
    myStream.Read(Input, 0, fileLen);

或者直接保存在服务器上:

FileUpload1.SaveAs(savePath);

【讨论】:

  • 谢谢,但上传对话框关闭后如何进行 postabk?
  • 您的对话框上必须有一个按钮才能关闭。只需回发该按钮(确保它是服务器控件)。并在单击该按钮时进行保存
【解决方案2】:

我想推荐uploadify,它是用flash构建的。使用 jQuery 和 asp.net 非常简单易用。

Demo 依赖 php 进行上传,但它可以用于任何平台,包括 asp.net。 您必须编写一个处理程序文件来执行上传、流式传输和 sql 存储部分。

检查这些答案

【讨论】:

    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 2019-01-12
    • 2011-08-16
    • 2019-04-17
    • 2015-10-11
    • 2011-03-27
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多