Skip to content

Getting Files backed up by the filesystem #37340

Description

@jimmywarting

Is your feature request related to a problem? Please describe.
Blobs are merely pretty useless if they can only be constructed and held in memory.
A way to get blobs from the filesystem is necessary if we should see any use for them
I propose we add support for getting blob's from the filesystem before we start adding support for them in other places like the crypto, streams, fs and other place

After all writing a blob back to the filesystem can be as easy as creating a stream and piping it back to the filesystem or to a http request

Describe the solution you'd like

fs.promises.getBlob('./4gb.dat') // just so we can start using the blob
fs.promises.getFile('./4gb.dat') // think this requires a File class

// It should not be a issue to get a blob sync, the data should not be held in memory anyway
// the only thing that should be read is modified time and the file size (and filename for `.getFile()`)
// it should only be a pointer to where it should read the data from ( like a handle )
fs.getBlobSync('./4gb.dat')

if the modified time is changed when you try to read the blob then it should throw a NotReadableError DOMException saying that it's out of sync. Likewise if size is changed.

Describe alternatives you've considered
fetch-blob has a "BlobDataItem" that is backed up by the filesystem...


assume this depends somewhat on #37338 and #39015 being resolved first

Activity

  1. changed the title [-]Getting a Blobs backed up by the filesystem[/-] [+]Getting Blobs backed up by the filesystem[/+] on Feb 13, 2021
  2. added
    feature requestIssues requesting new Node.js features.
    fsIssues and PRs related to file-system APIs and the fs module.
    on Apr 13, 2021
  3. changed the title [-]Getting Blobs backed up by the filesystem[/-] [+]Getting Files backed up by the filesystem[/+] on Jul 7, 2021
  4. moved this to Pending Triage in Node.js feature requestson Apr 4, 2022
  5. jimmywarting commented on Apr 28, 2022

    @jimmywarting
    Author

    browser has something new on drag and drop'ed files & folders DataTransferItem.prototype.getAsFileSystemHandle to get things as a whatwg/fs handle

    i think we could have something like getAsFileSystemHandle added onto the fs.Dirent

    Some proposals

    import { readdir, getAsFileSystemHandle } from 'fs/promises'
    const handle = await getAsFileSystemHandle(path)
    
    const [dirent] = readdir(path, { withFileTypes: true })
    const handle = await dirent.getAsFileSystemHandle()
    
    const file = await handle.getFile()
    const text = await file.text()
  6. github-actions commented on Mar 6, 2023

    @github-actions
    Contributor

    There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be closed 6 months after the last non-automated comment.

    For more information on how the project manages feature requests, please consult the feature request management document.

  7. added
    staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.
    on Mar 6, 2023
  8. moved this from Pending Triage to Stale in Node.js feature requestson Apr 4, 2023
  9. github-actions commented on Apr 6, 2023

    @github-actions
    Contributor

    There has been no activity on this feature request and it is being closed. If you feel closing this issue is not the right thing to do, please leave a comment.

    For more information on how the project manages feature requests, please consult the feature request management document.

  10. jimmywarting commented on Jul 24, 2023

    @jimmywarting
    Author

    just for the sake of it:

    fixed / closed by #45258

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature requestIssues requesting new Node.js features.fsIssues and PRs related to file-system APIs and the fs module.staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions