ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)

在写这篇的时候本来想把标题直接写成报错的提示,如下:

“SecurityError:Blocked a frame with origin "http://localhost:55080" from accessing a cross-origin frame.”

但是有点长,会显示不全,就想还是换一下吧,想了一下

“ASP.NET 上传过大图片或文件报错解决办法”,

然后当我写完这个题目之后,我觉得这篇文章好像根本没有写的必要,估计看完题目就会想到关于web.config配置的方面了。但是想写的内容真的不是那么“单纯”的,毕竟是花了自己几个小时去研究的啊~~所以又想了一下,变成了现在的这个题目,就是想和大家分享一下。

那言归正传了。

先上一下报错的提示截图:

先提示

后提示

是这样的,在网上下载了一个ajaxfileupload.js插件,用于无刷新上传图片使的,然后就按照demo的例子去运行了一下,上传啊什么的都OK,但是正好上传的示例图片有一个比较大的,4M,5M的样子,然后上传就会报上面的错误。

单纯看我的描述,明显发现就是图片较大的原因,可能很快就会想到web.config的配置问题上,但是当我是当局者的时候,就没有那么灵光了,因为有提示错误,就有去百度一下,结果查到是什么“跨域调函数”的问题,至此,这个问题我探究的方向已经走偏。

虽然问题提示当中没有明显的说出是跟上传图片的大小有关系,但是这个问题确实是因为没有设置上传文件的大小,而asp.net的默认上传文件大小是2M

我先把解决方法告诉大家,就是在Web.config的<system.web>中加上下面这段

<httpRuntime maxRequestLength="4096"
    useFullyQualifiedRedirectUrl="true"
    executionTimeout="6000"
    minFreeThreads="8"
    minLocalRequestFreeThreads="4"
    appRequestQueueLimit="100"
    enableVersionHeader="true" />

说明:

华丽的分割线



华丽的分割线

如果大家想了解我对整个问题的探究过程,那就继续往下看,蛮有意思的(其实也因为探究问题最初的跑偏,让我学习到了相关的更多知识,过程比较恶心,但是结果比较开心。)

话说查那个报错提示,就是“SecurityError:Blocked a frame with origin "http://localhost:55080" from accessing a cross-origin frame.”这句,然后提到了什么“跨域调函数”,当时就迷糊了,这是什么东西啊?然后看到一篇文章是讲关于这个的,主要说就是页面中存在一个iframe,然后iframe中的js代码与页面中的js代码相互调用,在某种情况下就变成了跨域的调用,就会报错。

查到这里我就已经有点不耐烦了,因为貌似需要去查看ajaxfileupload.js插件的源代码了,说实话,看js源码是我众多不爱做的事情之一。但是我又是不喜欢遇到问题草草了事的人,所以必须要看一下了。

最初其实我比较纳闷的是js如何实现将文件上传的?当然,我知道是ajax,但是导向页面的时候,后台是怎么得到的想要上传文件路径的呢?(前台是死都不会让你得到的,只会是类似c:\fakepath\XXX.jpg)原谅我的无知,其实一直在用ASP.NET的自带控件,从来也就没有把这些问题当回事(只是最近好像才灵光一些,听一些朋友说现在开发都不会用ASP.NET的自带控件了,所以最近才开始改变),但是当需要用<input type=file />的时候,才知道自己真的是一无所知。好杯具啊~

说一下js是怎样通过ajax实现上传文件的吧,简单说就是通过提交表单,把包含有<input type=file />的form提交就OK了,然后在后台通过

HttpFileCollection files = System.Web.HttpContext.Current.Request.Files

就能得到这个文件对象,然后就可以进行一系列的操作了。不过通常都是先把文件保存到一个我们指定的目录下,如果你想预览图片,那么就只能调出拷贝到指定目录下的图片去显示。不知道我说的清楚否?

下面说说 ajaxfileupload.js插件是怎么实现文件上传的吧,它是动态的去创建一个iframe和一个form,然后clone(克隆)页面中的<input type=file />到这个form中,之后提交这个动态创建的form,这样后台就能知道你想上传的文件是什么了,返回的内容显示到动态iframe中,更重要的是这是一个无刷新的上传啊!感觉这个想法简直酷毙了。

回到问题,在这个过程中我发现完全没有所谓的“跨域调函数”的问题,后来跟着浏览器打断点。发现选择较大文件上传的时候,动态iframe的文档结构根本就没有生成出来,接着就被catch住了。

因为整个js的代码看的还算仔细,感觉也没什么尿点。就是因为上传文件的大小不同会导致iframe的文档结构能否生成,所以这时候我才有点反过劲儿来,是不是项目配置的问题啊?然后就找到了上面的解决办法。

兜了一个大圈子终于把问题解决,但是关于ajaxfileupload.js插件的事儿还没有完,如有兴趣,请关注:

jQuery 关于ajaxfileupload.js插件的逐步解析(ajaxfileupload.js第二弹)

jQuery 自制弹框上传头像插件-待完善(ajaxfileupload.js第三弹)

时间: 2024-08-02 15:13:44

ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)的相关文章

ASP.NET 使用js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)

在写这篇的时候本来想把标题直接写成报错的提示,如下: "SecurityError:Blocked a frame with origin "http://localhost:55080" from accessing a cross-origin frame." 但是有点长,会显示不全,就想还是换一下吧,想了一下 "ASP.NET 上传过大图片或文件报错解决办法", 然后当我写完这个题目之后,我觉得这篇文章好像根本没有写的必要,估计看完题目就会

ASP.NET 使用ajaxupload.js插件出现上传较大文件失败的解决方法

在网上下载了一个ajaxupload.js插件,用于无刷新上传图片使的,然后就按照demo的例子去运行了一下,上传啊什么的都OK,但是正好上传的示例图片有一个比较大的,4M,5M的样子,然后上传就会报上面的错误. 单纯看我的描述,明显发现就是图片较大的原因,可能很快就会想到web.config的配置问题上,但是当我是当局者的时候,就没有那么灵光了,因为有提示错误,就有去百度一下,结果查到是什么“跨域调函数”的问题,至此,这个问题我探究的方向已经走偏. 虽然问题提示当中没有明显的说出是跟上传图片的

datasnap 上传/下载大文件(本Demo以图传片文件为例)

datasnap 上传/下载大文件(本Demo以图传片文件为例) 作者:admin 来源: 日期:2011-8-17 11:44:51 人气:737 标签: QQ空间 新浪微博 腾讯微博 腾讯朋友 QQ收藏 百度空间 百度贴吧 更多0 好久没写技术文了 datasnap传大流. 完整代码,同时感谢叶兄传流的指点,(只公开十天) 附:下面代码,转载请注明出处 ::code 服务端: function TServerMethods1.DownLoadFile(AfileName: string):

SecureCRT使用sftp上传较大文件意外暂停

今天在一台跳转机使用SecureCRT的sftp上传较大文件时,发现中途会时常停止传输,给出提示如下: 如果此时选择Accept Once,会继续传输,但是过一段时间后,还是会停止并给出相同提示,如果选择Accept & Save,就会给出如下提示: 可以看到是写入内容到这个HostKeyDB.txt文件没有权限,实际操作证明需要修改对应文件和文件所在文件夹的权限,因为正常需要添加如下两处内容: 之后,就没再遇到中途停止传输的事情了. 原文地址:https://www.cnblogs.com/j

动态input file多文件上传到后台没反应的解决方法!!!

其实我也不太清除具体是什么原因,但是后面就可以了!!! 我用的是springMVC 自带的文件上传 1.首先肯定是要有springMVC上传文件的相关配置! 2.前端 这是动态input file上传到后台没反应的写法(页面上写死的上传到后台是可以的) 这段代码是写在table>>下的form表单里的 <input type="button" name="button" value="添加附件" onclick="ad

官方webupload上传多个文件或者图片的方法

文件上传 页面代码: <!--引入CSS--> <link rel="stylesheet" type="text/css" href="webuploader文件夹/webuploader.css"> <!--引入JS--> <script type="text/javascript" src="webuploader文件夹/webuploader.js">

c# asp.net mvc4 使用uploadify插件实现上传功能

[1]首先去官网下载插件:http://www.uploadify.com/download/ .ww我使用的是免费的,基于flash的版本.因为基于H5的版本需付费使用,然后使用该插件也就是做做毕设网站,所以就不讲究了. [2]接下来在view中引用uploadify的js与css文件,再配置uploadify.注意,这里的路径随着你程序中uploadify文件的位置改变而改变.我是放在与bin文件夹同级的位置 <link rel="stylesheet" href="

AJaxFileUpload 文件上传&lt;pre&gt;,json字符串为空解决方法

View页面 的JS代码 其中返回值要进行序列号 dataType要大写 <script type="text/javascript"> function ajaxFileUpload(){ $.ajaxFileUpload({ url: '/FileUpload/Index', //用于文件上传的服务器端请求地址 secureuri: false, //是否需要安全协议,一般设置为false fileElementId: 'fileName', //文件上传域的ID da

win服务器 文件上传下载出现“未指定的错误” 解决方法汇总

环境 WIN平台IIS服务器   经常出现于ASPX页面 汇总 1.权限问题 出现场景 : 基于ACCESS数据库   原因解析 : 1.首先需要排除自身问题,例如建表使用关键字,格式错误,插入数据与数据库类型不匹配等等 2.TEMP权限检查,当数据写入数据库的时候需要获取当前服务器权限只有设置了IIS的temp写入权限才能进行数据写入 解决办法 : 第一种解决方法:使用Ms Access里的“工具->数据库实用工具->压缩和修复数据库”来修复db/global.asa.如果修复后还是出错,请