Back

How to view File from appwrite storage

  • 0
  • Storage
  • Cloud
NHero
29 Sep, 2024, 12:35

I want to get the file from an api route, but how do i send the file from api route, as its an array buffer and i cant send it using NextResponse.json()

I haven't worked with files, this is my first time

TL;DR
There is a misconception here. You should not send the file in the JSON response since it's an array buffer. Instead of using `NextResponse.json()`, you can use `NextResponse.buffer()` to return the file content. This way, the users can download the file when they access your API route.
NHero
29 Sep, 2024, 12:35

My API Route Code

TypeScript
import { SESSION_COOKIE } from "@/const";
import { db, noteAttachmentBucket, noteCollection } from "@/models/name";
import { createSessionClient } from "@/models/server/config";
import { NextRequest, NextResponse } from "next/server";

export async function GET(req: NextRequest) {
  try {
    const note_id = req.nextUrl.searchParams.get("note_id")
    

    if (!note_id) {
      return NextResponse.json({
        success: false,
        error: "Note ID is required"
      }, { status: 400 })
    }

    const session = req.cookies.get(SESSION_COOKIE)
    if (!session || !session.value) {
      return NextResponse.json({
        success: false,
        error: "Unauthorized"
      }, { status: 401 })
    }

    const { databases, storage } = await createSessionClient(session)
    const note = await databases.getDocument(db, noteCollection, note_id)

    if (!note) {
      return NextResponse.json({
        success: false,
        error: "Note not found"
      }, { status: 404 })
    }

    const viewFile = await storage.getFileView(noteAttachmentBucket, note.file_id)

    return NextResponse.json({
      success: true,
      noteData: {
        title: note.title,
        description: note.description,
        subject: note.subject,
        tags: note.tags,
      }
    })

  }
  catch (err) {
    return NextResponse.json({
      success: false,
      error: "Internal server error"
    }, { status: 500 })
  }
}

https://pastebin.com/N7Nr0e3G

Reply

Reply to this thread by joining our Discord

Reply on Discord

Need support?

Join our Discord

Get community support by joining our Discord server.

Join Discord

Get premium support

Join Appwrite Pro and get email support from our team.

Learn more