Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

654
Visualizações
Punto final de SvelteKit: conversión desde Node/Express

Nuevo en SvelteKit y trabajando para adaptar un punto final de un servidor Node/Express para hacerlo más genérico para poder aprovechar los adaptadores SvelteKit. El punto final descarga archivos almacenados en una base de datos a través de node-postgresql.

Mi punto final funcional en Node/Express se ve así:

 import stream from 'stream' import db from '../utils/db' export async function download(req, res) { const _id = req.params.id const sql = "SELECT _id, name, type, data FROM files WHERE _id = $1;" const { rows } = await db.query(sql, [_id]) const file = rows[0] const fileContents = Buffer.from(file.data, 'base64') const readStream = new stream.PassThrough() readStream.end(fileContents) res.set('Content-disposition', `attachment; filename=${file.name}`) res.set('Content-Type', file.type) readStream.pipe(res) }

Esto es lo que tengo para [filenum].json.ts en SvelteKit hasta ahora...

 import stream from 'stream' import db from '$lib/db' export async function get({ params }): Promise<any> { const { filenum } = params const { rows } = await db.query('SELECT _id, name, type, data FROM files WHERE _id = $1;', [filenum]) if (rows) { const file = rows[0] const fileContents = Buffer.from(file.data, 'base64') const readStream = new stream.PassThrough() readStream.end(fileContents) let body readStream.pipe(body) return { headers: { 'Content-disposition': `attachment; filename=${file.name}`, 'Content-type': file.type }, body } } }

¿Cuál es la forma correcta de hacer esto con SvelteKit sin crear una dependencia en Node? Según los documentos de punto final de SvelteKit ,

No interactuamos con los objetos req/res con los que podría estar familiarizado del módulo http de Node o marcos como Express, porque solo están disponibles en ciertas plataformas. En su lugar, SvelteKit traduce el objeto devuelto en lo que requiera la plataforma en la que está implementando su aplicación.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

ACTUALIZACIÓN: El error se corrigió en SvelteKit. Este es el código actualizado que funciona:

 // src/routes/api/file/_file.controller.ts import { query } from '../_db' type GetFileResponse = (fileNumber: string) => Promise<{ headers: { 'Content-Disposition': string 'Content-Type': string } body: Uint8Array status?: number } | { status: number headers?: undefined body?: undefined }> export const getFile: GetFileResponse = async (fileNumber: string) => { const { rows } = await query(`SELECT _id, name, type, data FROM files WHERE _id = $1;`, [fileNumber]) if (rows) { const file = rows[0] return { headers: { 'Content-Disposition': `attachment; filename="${file.name}"`, 'Content-Type': file.type }, body: new Uint8Array(file.data) } } else return { status: 404 } }

y

 // src/routes/api/file/[filenum].ts import type { RequestHandler } from '@sveltejs/kit' import { getFile } from './_file.controller' export const get: RequestHandler = async ({ params }) => { const { filenum } = params const fileResponse = await getFile(filenum) return fileResponse }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda