diff --git a/lib/active_storage/service/scaleway_service.rb b/lib/active_storage/service/scaleway_service.rb
index 917bfd032d09389a0fabc2ffbb27d5c58c76e64c..28b7569b96cf8bf5149497c361c1ae19f7a2c17b 100644
--- a/lib/active_storage/service/scaleway_service.rb
+++ b/lib/active_storage/service/scaleway_service.rb
@@ -14,5 +14,17 @@ module ActiveStorage
 
       headers.merge({ "Content-Type" => content_type, "Content-MD5" => checksum, "Content-Disposition" => content_disposition })
     end
+
+    private
+
+    def public_url(key, **options)
+      disposition, filename, content_type = options.values_at(:disposition, :filename, :content_type)
+      uri = URI.parse(object_for(key).public_url)
+      uri.query = URI.encode_www_form({
+        "response-content-disposition" => content_disposition_with(type: disposition, filename: filename),
+        "response-content-type" => content_type
+      })
+      uri.to_s
+    end
   end
 end