我已经搜遍了这个问题,所以我在这里提出这个问题。这是我的问题:
我有一个MVC 5 Web应用程序,它允许我们的管理员上传我们的客户的徽标文件,这些客户是在这个Web应用程序中托管的。此徽标显示在设置页面上,也显示给客户“客户”显示的页面。
问题是,客户定期向我们提供一个会破坏页面的文件,因为它不会显示徽标,也不会呈现徽标后应该存在的页面的任何部分。我们已经在各种照片编辑器中查看了这些问题徽标,并尝试重新保存它们,它们看起来很好,直到我们尝试在网站上显示它们。它们存储在我们的数据库中,大小不到500kb,大多数都小得多。
所以这就是我在cshtml视图中的内容:
class BaseViewController: UIViewController {
func onRetryClick() {
// override to customize or write here the common behaviour
}
}
class FirstViewController: BaseViewController {
override func onRetryClick() {
// do something specific for FirstViewController
}
}
class SecondViewController: BaseViewController {
override func onRetryClick() {
// do something specific for SecondViewController
}
}
class ThirdViewController: BaseViewController {
// if you don't override this method, super class (BaseViewController) implementation will be executed
}
extension BaseViewController {
func connectionLost(){
var message = "Your device has lost connection to the server. Check that you have a valid internet connection and then retry."
let alertController = UIAlertController( title: "Connection Lost",
message: message,
preferredStyle: .alert)
let retryAction = UIAlertAction(title:"Retry", style: .default, handler: { action in
self.onRetryClick()
})
alertController.addAction(retryAction)
self.present(alertController, animated: true, completion: nil)
}
}
当这个工作时,呈现的HTML看起来像这样:
<div class="display-label">@Html.DisplayNameFor(model => model.LogoData)</div>
<div class="display-field">
@{
if (Model.LogoData != null)
{
var base64 = Convert.ToBase64String(Model.LogoData);
var imgSrc = String.Format("data:image/jpeg;base64,{0}", base64);
<img src="@imgSrc" />
}
}
</div>
我为此代码段截断了图像数据,但您明白了。
当我们得到一个糟糕的图像时,呈现的HTML看起来像这样:
<div class="display-label">Logo</div>
<div class="display-field">
<img src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAAEDCAIAAADoQE..." />
</div>
就是这样,除了关闭body标签等之外,页面中不再呈现HTML。
我的工作理论是图像数据中有一些东西会导致剃刀视图引擎发生变化,但是我不知道如何识别或修复它。
非常感谢任何帮助或建议。