<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Маршрут API для генерации presigned URL]]></title><description><![CDATA[<p dir="auto">Маршрут API для генерации presigned URL для загрузки в S3 в Next.js</p>
<pre><code class="language-jsx">// S3 Presign Upload
export async function POST(req: Request) {
  const { type } = await req.json();

  const key = `${nanoid()}.${type.split('/')[1]}`;

  const { url, fields } = await new Promise((res, rej) =&gt; {
    s3.createPresignedPost(
      {
        Bucket: 'your-bucket-name',
        Fields: { key },
        Expires: 60,
        Conditions: [
          ['content-length-range', 0, 5 * 1024 * 1024],
          ['starts-with', '$Content-Type', 'image/'],
        ],
      },
      (err, data) =&gt; err ? rej(err) : res(data)
    );
  });

  return Response.json({ url, fields, key });
}
</code></pre>
<p dir="auto">Используется вместе с кастомным upload-хуком, чтобы безопасно загружать файлы напрямую в S3 с клиента.</p>
<p dir="auto">Он проверяет тип файла, генерирует уникальный ключ и возвращает presigned URL + поля, необходимые для загрузки.</p>
]]></description><link>https://forum.exlends.ru/topic/139/marshrut-api-dlya-generacii-presigned-url</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 08:58:18 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/139.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Jun 2025 13:57:38 GMT</pubDate><ttl>60</ttl></channel></rss>