【问题标题】:MVC - load an image on the page from a "shortened" code on my domain (like Bit.ly does with links)MVC - 从我的域上的“缩短”代码加载页面上的图像(就像 Bit.ly 对链接所做的那样)
【发布时间】:2017-07-24 15:26:40
【问题描述】:

我有http://example.com/Image/Show/CwYDBw8LDww,其中 example.com 是我的站点,Show 是 Image 控制器中的一个方法,唯一 id CwYDBw8LDww 是数据库中的一个键,它将指向不同域上的某个其他 URL,例如Google 上的“托管”图片。

这样做的原因是 URL 可能会变得非常长且难以处理。我将网站内容存储为 Markdown/HTML,并希望能够编写如下内容:

<p>Here is an image of a cat.</p>    
<img src="http://example.com/Image/Show/CwYDBw8LDww"> 

让它像我放的一样呈现页面:

<img src="http://googleusercontent.com/SomeReallyReallyReallyLongImageURL.jpg">

所以在数据库中有一个带有值的表条目:("CwYDBw8LDww", "http://googleusercontent.com/SomeReallyLongImageURL.jpg") 这就是我知道哪个“真正的长 URL”属于短代码的方法。

我知道如何(例如)通过获取操作返回它来将“google”URL 打印到屏幕上,我已经能够与数据库对话,等等。我缺少的部分是得到 /Images/Show?shortcode=CwYDBw8LDww以可以在页面上呈现的方式恢复 Google 图片。以及我是否应该在视图中这样做,或者什么。

我的视图目前有类似的内容:

@Html.Raw(@Model.ArticleContent)

内容已存储为&lt;p&gt;Here is an image of a cat&lt;/p&gt; 等的位置。

【问题讨论】:

  • 我自己已经回答了这个问题,因为我现在已经开始工作了。我已经把它挂在我嵌入网页中的“图像”上,而不是“顶级”的页面重定向,即浏览器在地址栏中显示的页面等。一旦我退后一步并意识到 HTTP请求实际上只是一个请求,无论我解决的响应的“类型”是什么。

标签: asp.net-mvc http razor url-shortener


【解决方案1】:

我用一点耐心和研究自己解决了这个问题!我将以下内容添加到我的图像控制器中。

public RedirectResult Show(string shortcode)
{
    return Redirect(data.GetURL(shortcode));
}

GetURL() 是我的数据访问层中的一种方法,它向数据库询问适用于短代码的“长”URL。 (我会处理类似GetURL() 代码中不存在短代码的情况,因此Show() 假定它已获得有效的 URL。)

这会返回一个 302“临时重定向”HTTP 响应,以将客户端重新指向“新”(在我的示例中为 Google)URL。

这个SO question and answers 有助于了解我需要的概念。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多