Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在AJAX updatepanel中上载文件而不进行完全回发_Asp.net_Ajax_File Upload_Updatepanel_Asynchronous Postback - Fatal编程技术网

Asp.net 在AJAX updatepanel中上载文件而不进行完全回发

Asp.net 在AJAX updatepanel中上载文件而不进行完全回发,asp.net,ajax,file-upload,updatepanel,asynchronous-postback,Asp.net,Ajax,File Upload,Updatepanel,Asynchronous Postback,我有一个更新面板,在更新面板中我有文件上载控件和按钮控件,在按钮单击时,我需要在updatepanel中的文件上载控件中上载的文件 确切的情况是,我在页面上有8个选项卡,每个选项卡包含太多信息,其中一个选项卡是附件,当用户单击“添加新附件”模式弹出窗口时,模式包含Updatepanel中的detailsview,在detailsview中我有文件上载控件,当用户单击“保存”按钮时,详细信息查看插入事件触发,在插入事件中,我需要上传的文件。 请注意,我的页面很重,我不想全部回复 有人能解决这个问题

我有一个更新面板,在更新面板中我有文件上载控件和按钮控件,在按钮单击时,我需要在updatepanel中的文件上载控件中上载的文件


确切的情况是,我在页面上有8个选项卡,每个选项卡包含太多信息,其中一个选项卡是附件,当用户单击“添加新附件”模式弹出窗口时,模式包含Updatepanel中的detailsview,在detailsview中我有文件上载控件,当用户单击“保存”按钮时,详细信息查看插入事件触发,在插入事件中,我需要上传的文件。
请注意,我的页面很重,我不想全部回复


有人能解决这个问题吗


提前感谢您的帮助….

如果客户端上没有安装协同工作的二进制文件,则无法完成此操作。AJAX框架没有安全的机制来读取文件的内容,从而能够将其发送到服务器。浏览器仅支持从文件输入框发送多部分表单。

要解决此问题,请参阅以下步骤

  • 将ajax上传添加到详细信息视图。
    • 基于iframe的上传器,如资源#1
    • 基于Silverlight和Flash的上传程序。我喜欢这种技术,因为它不需要任何服务器端脚本来显示当前的上传状态。但是在HTML5中,您可以不使用任何web浏览器插件来创建它
    • 商业上传器类资源#2。使用隐藏的iframe进行上传
  • 将文件上载到临时位置。

    • 系统响应临时位置。接下来,客户端将临时位置保留在细节表单中的隐藏输入中
    • 保留会话id为的临时位置。根据您的框架,您可以将其存储在数据库或会话变量中
  • 单击“保存”按钮时,系统会将文件移动到其实际位置

  • 注意。系统将自动从临时位置删除过期文件

    资源

  • 更新

    将近一年后,我发现了一个很好的第三方控制这个问题。这是jQuery的一个开源插件。它命名为Plupload,允许您使用HTML5、Silverlight、Flash或普通表单上传文件,并提供一些独特的功能,如上传进度、图像大小调整和分块上传


    您看到的提供此功能的站点通常使用flash或iframe,因此回发发生在iframe中,并产生ajax请求的错觉


    OneSHOT

    问题在于HTML文件上载控件的工作方式,与ASP.net无关,要使文件上载控件正常工作,您需要完整发布表单数据。您只能通过在一个隐藏的iframe中执行所有操作来模拟您没有执行完整的回发,该iframe会执行实际的上传操作。我已经尝试过swfupload(),但请记住,如果您在非IE浏览器中使用表单身份验证,您必须跳过这些障碍。这显然是一个flash bug,在flash 10中没有修复。由于这个bug,我决定不在我们的框架中使用它,但在其他方面它是一个很棒的产品。

    我推荐YUI提供的uploader小部件。看

    我想你可以用它来实现你的目标。您的javascript需要在文件完成上传后从服务器将文件取回客户端。但是页面不会刷新——上传是通过flash和隐藏的iframe完成的。向用户显示文件内容的下载将通过ajax进行


    如果用户未“批准”上传,则只需再次向服务器发出ajax调用以删除文件。

    感谢您的快速回复。是否有任何技巧或解决方法来实现此目的?没有任何技巧或解决方法,这是安全点。如果有一个解决方法,则不安全。考虑恶意程序员可以做的事情,如果这样的工作循环存在,然后你意识到为什么这种事情被阻止。我本来想投票的…但我今天没票了!!有人给这个家伙一个+1。他所做的是把文件上传控制放在另一个页面和附件表单上,使用IFRAME并设置源文件上传控制页面。在AsyncPostBack fileupload控制页面上,返回并上载附加文件。。。。但我在这里有不同的场景,就像我在问题中提到的,我有detailsview,在detailsview中我有文件上传控制和其他信息,当用户点击save按钮时,我需要相同页面上的图像的二进制信息,而不是其他页面上的图像,顺便说一句,这在我的场景中不是解决方案。。。。感谢回复这种类型的解决方案我已经很早就开始实施了,但在我的方案中没有帮助。对于您的请求,您必须修改当前的详细信息。详细信息请参阅我的更新答案。确切的方案,我在第页上有8个选项卡,每个选项卡包含太多信息,其中一个选项卡是附件,当用户单击显示的添加新附件模式弹出窗口时,模式在Updatepanel中包含detailsview,在detailsview中我有文件上载控件,当用户点击save按钮时,触发detailsview插入事件,在插入事件中我需要已上载的文件。请注意,我的页面很重,我不希望完全回发。如果使用IFrame,文件上载信息将仅在IFrame页面源中可用,但我没有类似的场景,我已尝试过此解决方案。可能您需要提供更多信息以获得更多投票,但你所描述的本质上是像GMail这样的网站如何进行Ajax上传。