在 Django 应用程序中为上传的图像生成可公开访问的 URL 时遇到问题

Trouble Generating Publicly Accessible URL for Uploaded Images in Django App

提问人:Mashud Hassan 提问时间:11/15/2023 最后编辑:Brian Tompsett - 汤莱恩Mashud Hassan 更新时间:11/15/2023 访问量:18

问:

我目前正在开发一个本地托管的 Django 应用程序,该应用程序接受用户上传的图像。图像已成功存储,但我在为这些上传的图像生成可公开访问的 URL 方面面临挑战。最终目标是将此 URL 馈送到 replicate.com API 终结点。

以下是我的过程的简要概述:

  1. 用户通过 Django 应用程序上传图像。
  2. 映像存储在本地服务器上。
  3. 需要为上传的图像生成可公开访问的 URL。 views.py:
from django.shortcuts import render
import os
import replicate
from .forms import ImageUploadForm

def index(request):
    if request.method == 'POST':
        form = ImageUploadForm(request.POST, request.FILES)
        if form.is_valid():
            
            image_instance = request.FILES['image']
            file_url = handle_uploaded_file(image_instance)
            response = run_replicate(file_url)
            output_url = response[0]
            context = {'output_url': output_url}
            return render(request, 'core/results.html', context)

    else:
        form = ImageUploadForm()

    return render(request, 'core/index.html', {'form': form})

def handle_uploaded_file(uploaded_file):
    os.makedirs('images/new', exist_ok=True)
    file_path = os.path.join('images/new', uploaded_file.name)
    with open(file_path, 'wb+') as destination:
        for chunk in uploaded_file.chunks():
            destination.write(chunk)

    file_url = file_path.replace("\\", "/")
    file_url = "https://replit.com/@mashudhassandev/ChatgptImgGen#" + file_url
    return file_url
  

def run_replicate(file_content):
  model_id = 'jagilley/controlnet-canny:aff48af9c68d162388d230a2ab003f68d2638d88307bdaf1c2f1ac95079c9613'
  response = replicate.run(
      model_id,
      input={
          'image': open(file_content, "rb"),
          'prompt': 'hyperrealistic portrait, photograph, real person'
      })
  
  return response

如何在 Django 中有效地为上传的图像创建一个可公开访问的 URL?任何见解、代码片段或最佳实践将不胜感激。

python django webserver replicate

评论


答: 暂无答案