You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何缩短Google Cloud Storage URL或使用自定义域名(Django后端)

解决GCS URL过长无法短信分享的方案(Django后端)

一、改用GCS公开访问URL(最简单方案,适合可公开的文件)

你当前的URL是带签名参数的临时访问链接,长度主要来自签名串。如果你的图片/PDF允许公开访问:

  1. 进入Google Cloud Console,找到对应存储桶,设置目标文件或整个文件夹的权限为公共读取(添加allUsers角色为Storage Object Viewer)
  2. 此时文件的公开URL格式为:
    https://storage.googleapis.com/[你的存储桶名]/[文件路径]
    
    比如你的示例文件会变成:
    https://storage.googleapis.com/mob-uat-server/products/images/Polycab/Polycab%20Elanza%20NEO%20Storage%20Water%20Heater%2C%2015%20L%20%28POL-ElanzaNeo-15%29/129LEG115.jpeg
    
    比原签名URL短很多,且无过期时间。

二、绑定自定义域名到GCS(品牌化+缩短域名)

如果需要用自己的域名替代默认的storage.googleapis.com,步骤如下:

  1. 域名验证:在Google Cloud Console的「Cloud Storage」→「设置」→「自定义域名」中,添加你的自定义域名(比如cdn.yourdomain.com),按照提示完成域名所有权验证(通常是添加TXT记录到DNS)
  2. DNS配置:在域名服务商处添加CNAME记录,将cdn.yourdomain.com指向c.storage.googleapis.com
  3. HTTPS配置:启用Google管理的SSL证书,确保访问是HTTPS(GCS会自动处理证书颁发和续期)
  4. 配置完成后,文件访问URL变为:
    https://cdn.yourdomain.com/[文件路径]
    
    不仅缩短了域名部分,还能使用更简洁的品牌域名。

三、Django后端自建短链服务(最灵活,适合需控制访问的场景)

如果文件不能公开,需要保留签名URL但缩短长度,可以在Django中实现自己的短链系统:

1. 创建短链模型

在Django app的models.py中添加:

from django.db import models
import string
import random

def generate_short_code():
    chars = string.ascii_letters + string.digits
    while True:
        code = ''.join(random.choice(chars) for _ in range(6))
        if not ShortURL.objects.filter(short_code=code).exists():
            return code

class ShortURL(models.Model):
    original_url = models.URLField(max_length=2048)
    short_code = models.CharField(max_length=10, unique=True, default=generate_short_code)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.short_code

2. 创建重定向视图

在views.py中添加:

from django.shortcuts import redirect, get_object_or_404
from .models import ShortURL

def redirect_short_url(request, short_code):
    short_url = get_object_or_404(ShortURL, short_code=short_code)
    return redirect(short_url.original_url)

3. 配置URL路由

在项目的urls.py中添加:

from django.urls import path
from .views import redirect_short_url

urlpatterns = [
    # 其他路由...
    path('s/<str:short_code>/', redirect_short_url, name='short_url_redirect'),
]

4. 生成短链

在需要生成短链的地方(比如生成GCS签名URL后),创建ShortURL实例:

from .models import ShortURL

# 假设gcs_signed_url是你生成的GCS签名URL
short_url_obj = ShortURL.objects.create(original_url=gcs_signed_url)
short_link = f"https://yourdomain.com/s/{short_url_obj.short_code}"

生成的短链类似https://yourdomain.com/s/abc123,长度极短,适合短信分享。

内容的提问来源于stack exchange,提问作者Abhijeet Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:58:10