Code Monkey home page Code Monkey logo

Comments (5)

js3692 avatar js3692 commented on May 20, 2024

Great! I would love to help out with this one, if it wasn't already picked up.

My thoughts right now is to pass an options parameter to the TusServer instance:

app.post('/api/videos/tus-upload', function(req, res) {
  server.handle(req, res, { filename: '50554d63-29bb-11e5-b345-feff819cdc9f' });
});

And either override the File id or instantiate with a file name in the POST handler:

send(req, res, options) {
[...]
  if (options && options.filename) {
    file.id = options.filename;
  }

  OR

  // filename would be '50554d63-29bb-11e5-b345-feff819cdc9f'
  // When undefined the constructor would default it to Uid
  const file = new File(upload_length, upload_defer_length, filename);
[...]
}

@bhstahl What are your thoughts?

from tus-node-server.

bhstahl avatar bhstahl commented on May 20, 2024

Sure! Feel free to open a PR from your fork.

While your suggestion works well for express, it doesn't really make sense for a standalone server that isn't planning on intercepting every request.

I wonder if it could be even simpler. You're going to have some sort of hashing function to generate the file name anyhow, right? What if DataStore.create takes the request instead of a File, then the DataStore decides the file name and creates the File itself. That way you provide the hashing function once and you're good to go:

// Datastore.js
class DataStore {
    constructor(options) {
        this.generateFileName = options.namingFunction || Uid.rand;
    }

    create(req) {
        const file_name = this.generateFileName(req);
        //...
    }
}

// your_server_implementation.js
const fileNameFromUrl = (req) => {
    return req.url.replace(/\//g, '-');
}

server.datastore = new tus.FileStore({
    path: '/files',
    namingFunction: fileNameFromUrl
});

What do you think @js3692 ?

from tus-node-server.

js3692 avatar js3692 commented on May 20, 2024

Thanks for the comments! I'll open a PR soon.

Yes, I think your suggestion makes better sense for standalone servers to take the hashing function. It could also allow express to flexibly attach the file name to req.filename for example and in the namingFunction just return req.filename.

I've implemented the Datastore.create() to take in req, decide the file name, and create File. Please let me know what you think!

from tus-node-server.

bhstahl avatar bhstahl commented on May 20, 2024

closed in #30

from tus-node-server.

avillarubia avatar avillarubia commented on May 20, 2024

Thanks for the comments! I'll open a PR soon.

Yes, I think your suggestion makes better sense for standalone servers to take the hashing function. It could also allow express to flexibly attach the file name to req.filename for example and in the namingFunction just return req.filename.

I've implemented the Datastore.create() to take in req, decide the file name, and create File. Please let me know what you think!

sorry but req.filename is undefined

from tus-node-server.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.