/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

Discuz!NT Flash无法上传头像,点击上传后无任何反应

2014-11-23 十有三 5 浏览:1万+ .NET技术 ASP.NET

最近在对一个Discuz!NT论坛的老项目进行维护和二次开发,遇到了论坛无法上传头像的问题。在网上找了相当多的资料,发现解决的方法基本是无效的。虽然有的状况一样,但是没有解决方法,后来自己研究了下也总算是解决了这个问题。

首先说明下出现无法上传头像的具体症状,大概的症状有下面这几点:

  1. 使用Flash头像上传时,点击上传图片,然后显示“图片载入中,请稍后的提示信息”和上传进度的百分比,最后却是没有任何的反应。
  2. 网上有部分网友说到进度到10%就没有任何反应,其实只是部分情况,如果传大图片的话会显示其他进度百分百。
  3. 使用超级银光头像上传时,点击上传图片,上传会上传成功,但是随后的预览图片会显示三张不同尺寸的空白图片,头像依然没有任何变化。

 discuz!nt 上传头像无效

再说下网上说的大部分情况,这里只做参考,毕竟我们的情况和下面关系不太大:

  1. 服务器文件夹权限问题
  2. UC通讯问题(Discuz!NT没有UC通讯)
  3. 所下载的论坛有问题

网上的说所的大部分情况都是PHP版的Discuz,自从2010年Discuz被腾讯收购以后,不仅Discuz!Nt论坛打不开,而且直到今天也都没有新版本更新。所以有些问题都不知道如何解决,只能自己摸索和研究!就像我遇到的这个Flash无法上传头像的问题,其实最后是需要更改下源代码的,网上基本找不到解决方法。

问题产生的原因分析和最终解决方法

主要原因是Discuz!Nt中是有启用URL重写,而项目代码中的Url重写模块有屏蔽掉上传头像的默认图片保存路径,如果访问了上传头像的默认图片路径,是无法打开的图片的,URL会被转移到首页,所以无论如何头像都无法上传成功。

我们看下论坛源码项目中Web.config配置文件对重写模块的配置:

    <httpModules>
      <add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
    </httpModules>

然后我们在项目中打开自定义的HttpModule类(位置在Discuz.Forum/HttpModule.cs),我们找到下面这段代码(我的项目是在284行,大家自己搜索下):

else if (requestPath.StartsWith(forumPath + "upload/") || requestPath.StartsWith(forumPath + "space/upload/") || requestPath.StartsWith(forumPath + "avatars/upload/"))
{
    context.RewritePath(forumPath + "index.aspx");
    return;
}

我们可以看到在URL重写模块中,只要网页中请求的路径是"upload"、"space/upload/"和"avatars/upload/"这三个文件夹,那么就会将请求的URL重写到网站首页,导致无法获取正确的头像图片URL,错误的头像图片路径造成图片无法正常打开,所以上传头像后会毫无反应。

另外其中的"upload"文件夹和"avatars/upload/"文件夹都是和头像有关的,我们可以尝试下随便在这两个文件夹下放置一张图片,然后我们在浏览器中直接访问这张图片的URL,我们可以发现图片是打不开的,因为被做了URL重写。

所以最后我是将这段代码做了注释,运行论坛发现头像已经可以正常的上传了!


作者:十有三

出处:https://shiyousan.com/post/635523343543614808

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: 奇怪的问题:ASP.NET MVC submit提交表单传入的模型实体对象为null和空值
  • 下一篇: Discuz!NT 图像因存在错误而无法显示

相关文章
  • .NET 4.5 使用async和await关键字调用异步方法
  • ChinaPay.dll 64位系统导致应用程序池崩溃,异常代码: 0xc0000005
  • 解决Visual Studio快捷键Ctrl+Alt+L与QQ热键冲突
  • ASP.NET HTTP 状态字符串无效
  • 解决IIS ASP.NET 网站发布后出现错误 Unable to connect to any of the specified MySQL hosts
  • 翻译:Changes to the language setting will not take effect until the environment is restarted.

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • VS重构重命名的快捷键

推荐文章

  • MongoDB在Windows Server 2012 R2中的安全部署
  • 网站使用plesk面板,页面出现default parallesls plesk page的解决方法
  • ASP.NET 动态设置 HTTP 500 引发内部服务器错误
  • 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
  • .NET 使用HttpWebRequest 伪造Request.UrlReferrer

友情链接

  • 码友网

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号
闽公网安备 35020302035102号