/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • 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 图像因存在错误而无法显示

相关文章
  • ASP.NET MVC 统一化自定义异常处理方案的选择
  • ASP.NET中.aspx页面使用<script runat="server">标记无法输出"</script>"字符串
  • IIS上设置ARR导致所有网站无法正常打开
  • ASP.NET MVC 5 学习笔记之FilterConfig类
  • 只允许一个 <configSections> 元素。它必须是根 <configuration> 元素的第一个子元素- HTTP Error 500.19
  • ASP.NET MVC出现XML5632仅允许有一个根元素

文章分类

.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重构重命名的快捷键

推荐文章

  • 解决ASP.NET MVC AllowAnonymous属性无效导致无法匿名访问控制器的问题
  • ASP.NET MVC全局异常处理和捕获的思路
  • ASP.NET MVC 页面静态化操作的思路
  • 设置Windows10的微软拼音输入法默认为英文
  • C#中将自定义日期和时间格式的字符串转换成日期DateTime类型

友情链接

  • Passingwind的博客
  • 码友网

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