알파피플 앱

📢 사진/보이스 업로드 완료



<사진>
generateImageUploadUrl -> 업로드(http put) -> createImageFromUploadUrl

<보이스>
generateFileUploadUrl -> 업로드(http put) -> createFileFromUploadUrl

사용해보시고 이상 있으면 알려주세요.
김기범, Flutter at Alphapeople 👍

Comments & Events

이재철, Backend at Alphapeople
김기범, Flutter at Alphapeople 김기범  보이스는 잘 되는데, 이미지 업로드는 PUT으로는 안되는것 같아서 리서치 중입니다. 
김기범, Flutter at Alphapeople
이재철, Backend at Alphapeople
아래는 Elixir 코드인데, 참고하시라고 올려둡니다.

POST에서는 multipart form data 로 처리하고,
PUT에서는 raw binary 로 처리하면 되더군요.

PUT 방식 (보이스 업로드시)

  def upload_to_url(url, file_path) do
    %{status: 200} =
      Tesla.put!(
        Tesla.client([Tesla.Middleware.JSON]),
        url,
        file_path |> File.read!()
      )

    :ok
  end


POST 방식 (이미지 업로드시)

  def upload!(path) do
    filename = Path.basename(path)

    multipart =
      Tesla.Multipart.new()
      |> Tesla.Multipart.add_file(path, name: "file", filename: filename)
      |> Tesla.Multipart.add_field("requireSignedURLs", "true")

    %{
      body: %{
        "success" => true,
        "result" => %{
          "id" => image_id
        }
      }
    } =
      Tesla.post!(
        client(),
        "/client/v4/accounts/#{account_id()}/images/v1",
        multipart,
        headers: headers()
      )

    image_id
  end