Endpoints
3
Formatos de carga permitidas
PNG & GLB
Endpoints disponibles
POST
const form = new FormData();
form.append("product_id", "123");
form.append("images[]", fileInput.files[0]); // PNG o GLB
// form.append("images[]", fileInput.files[1]); // varios archivos
const res = await fetch("https://espinoza-s3.crythion.com/api/images/upload", {
method: "POST",
body: form // sin Content-Type, el browser lo pone solo
});
const data = await res.json();
// { status:"success", images:[{ name, url, size, mime }] }
use Illuminate\Support\Facades\Http;
// $file = $request->file("imagen"); // UploadedFile de la request
$response = Http::attach(
"images[]", // campo array
file_get_contents($file->getRealPath()), // binario
$file->getClientOriginalName() // nombre original
)->post("https://espinoza-s3.crythion.com/api/images/upload", [
"product_id" => "123",
]);
$data = $response->json();
// $data["images"][0]["url"] => URL publica del archivo
// $data["images"][0]["name"] => nombre generado en el servidor
POST
const form = new FormData();
form.append("product_id", "123");
form.append("old_files[]", "20240101_abc12345.png"); // nombre a eliminar
form.append("images[]", fileInput.files[0]); // archivo nuevo
const res = await fetch("https://espinoza-s3.crythion.com/api/images/replace", {
method: "POST",
body: form
});
const data = await res.json();
// { status:"success", product_id, deleted:[], images:[...] }
use Illuminate\Support\Facades\Http;
$file = $request->file("imagen"); // UploadedFile
$response = Http::attach(
"images[]",
file_get_contents($file->getRealPath()),
$file->getClientOriginalName()
)->post("https://espinoza-s3.crythion.com/api/images/replace", [
"product_id" => "123",
"old_files[]" => "20240101_abc12345.png", // archivo a borrar
]);
$data = $response->json();
// $data["deleted"] => array con los archivos eliminados
// $data["images"][0]["url"] => URL publica del nuevo archivo
POST
const res = await fetch("https://espinoza-s3.crythion.com/api/images/delete", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
product_id: "123",
filename: "20240101_abc12345.png"
})
});
const data = await res.json();
// { status:"success", deleted:"20240101_abc12345.png" }
use Illuminate\Support\Facades\Http;
// Http::post envia JSON por defecto en Laravel
$response = Http::post("https://espinoza-s3.crythion.com/api/images/delete", [
"product_id" => "123",
"filename" => "20240101_abc12345.png",
]);
$data = $response->json();
// $data["deleted"] => nombre del archivo eliminado