Tus server Integration with shrine “Dealing with large uploads filesize > 1 gb”
I am trying to integrate the tus-server with shrine to upload the video files to the Vimeo.
Client.js
this.uppy = new Uppy({
id: 'uppy1',
autoProceed: false,
debug: true,
restrictions: {
allowedFileTypes: ['.mp4'],
},
allowMultipleUploads: true,
})
.use(Tus, { endpoint: `${API_BASE}/files` })
/* .use(XHRUpload, { endpoint: `${API_BASE}/files`,
formData: true,
bundle: false,
fieldName: 'file',
headers: getHeaders(), */
})
.use(GoogleDrive, { serverUrl: 'https://companion.uppy.io' })
.use(Dropbox, { serverUrl: 'https://companion.uppy.io/' });
# config/routes.rb (Rails)
Rails.application.routes.draw do
mount Tus::Server => "/files"
end
Here, by default tus server, It directly uploads the file to data/
folder with file in project root.
What I want to achieve is to upload the video
files to the vimeo
Like:
- File goes to
${API_BASE}/files
- Mine controller gets the file
- I pass the file to the vimeo (using vimeo_me2)
- Vimeo uploads the file, send the video_url back, I now insert the video_url in the certain video table.
- All these above process need to be resumable.
I am using vimeo_me2 gem.
Can Anyone provide solution to integrate/configure tus server with shrine.
Any help is much much appreciated!
javascript ruby-on-rails shrine tus
add a comment |
I am trying to integrate the tus-server with shrine to upload the video files to the Vimeo.
Client.js
this.uppy = new Uppy({
id: 'uppy1',
autoProceed: false,
debug: true,
restrictions: {
allowedFileTypes: ['.mp4'],
},
allowMultipleUploads: true,
})
.use(Tus, { endpoint: `${API_BASE}/files` })
/* .use(XHRUpload, { endpoint: `${API_BASE}/files`,
formData: true,
bundle: false,
fieldName: 'file',
headers: getHeaders(), */
})
.use(GoogleDrive, { serverUrl: 'https://companion.uppy.io' })
.use(Dropbox, { serverUrl: 'https://companion.uppy.io/' });
# config/routes.rb (Rails)
Rails.application.routes.draw do
mount Tus::Server => "/files"
end
Here, by default tus server, It directly uploads the file to data/
folder with file in project root.
What I want to achieve is to upload the video
files to the vimeo
Like:
- File goes to
${API_BASE}/files
- Mine controller gets the file
- I pass the file to the vimeo (using vimeo_me2)
- Vimeo uploads the file, send the video_url back, I now insert the video_url in the certain video table.
- All these above process need to be resumable.
I am using vimeo_me2 gem.
Can Anyone provide solution to integrate/configure tus server with shrine.
Any help is much much appreciated!
javascript ruby-on-rails shrine tus
add a comment |
I am trying to integrate the tus-server with shrine to upload the video files to the Vimeo.
Client.js
this.uppy = new Uppy({
id: 'uppy1',
autoProceed: false,
debug: true,
restrictions: {
allowedFileTypes: ['.mp4'],
},
allowMultipleUploads: true,
})
.use(Tus, { endpoint: `${API_BASE}/files` })
/* .use(XHRUpload, { endpoint: `${API_BASE}/files`,
formData: true,
bundle: false,
fieldName: 'file',
headers: getHeaders(), */
})
.use(GoogleDrive, { serverUrl: 'https://companion.uppy.io' })
.use(Dropbox, { serverUrl: 'https://companion.uppy.io/' });
# config/routes.rb (Rails)
Rails.application.routes.draw do
mount Tus::Server => "/files"
end
Here, by default tus server, It directly uploads the file to data/
folder with file in project root.
What I want to achieve is to upload the video
files to the vimeo
Like:
- File goes to
${API_BASE}/files
- Mine controller gets the file
- I pass the file to the vimeo (using vimeo_me2)
- Vimeo uploads the file, send the video_url back, I now insert the video_url in the certain video table.
- All these above process need to be resumable.
I am using vimeo_me2 gem.
Can Anyone provide solution to integrate/configure tus server with shrine.
Any help is much much appreciated!
javascript ruby-on-rails shrine tus
I am trying to integrate the tus-server with shrine to upload the video files to the Vimeo.
Client.js
this.uppy = new Uppy({
id: 'uppy1',
autoProceed: false,
debug: true,
restrictions: {
allowedFileTypes: ['.mp4'],
},
allowMultipleUploads: true,
})
.use(Tus, { endpoint: `${API_BASE}/files` })
/* .use(XHRUpload, { endpoint: `${API_BASE}/files`,
formData: true,
bundle: false,
fieldName: 'file',
headers: getHeaders(), */
})
.use(GoogleDrive, { serverUrl: 'https://companion.uppy.io' })
.use(Dropbox, { serverUrl: 'https://companion.uppy.io/' });
# config/routes.rb (Rails)
Rails.application.routes.draw do
mount Tus::Server => "/files"
end
Here, by default tus server, It directly uploads the file to data/
folder with file in project root.
What I want to achieve is to upload the video
files to the vimeo
Like:
- File goes to
${API_BASE}/files
- Mine controller gets the file
- I pass the file to the vimeo (using vimeo_me2)
- Vimeo uploads the file, send the video_url back, I now insert the video_url in the certain video table.
- All these above process need to be resumable.
I am using vimeo_me2 gem.
Can Anyone provide solution to integrate/configure tus server with shrine.
Any help is much much appreciated!
javascript ruby-on-rails shrine tus
javascript ruby-on-rails shrine tus
asked Nov 23 '18 at 11:14
p0k8_p0k8_
4,11132033
4,11132033
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Author of tus-ruby-server and Shrine here :)
You have two options as far as I'm concerned: use Vimeo's "pull upload", or upload directly to Vimeo.
A. Pull upload
Vimeo's pull upload allows you to give Vimeo the link to your file, and let it download and save the file for you. This should be resumable, because tus-ruby-server supports range requests, and it seems that Vimeo will use that:
We even handle any connectivity issues that might come up.
The vimeo_me2
gem has a method for pull upload. So you can just give it the link to the tus file, e.g if you have a Movie
with a video
attachment:
vimeo_client.pull_upload("Name of video", movie.video.url)
B. Direct upload to Vimeo
Vimeo also implements the tus resumable upload protocol, so theoretically it should be possible to use Uppy to upload directly to Vimeo. In that case you could get rid of tus-ruby-server
.
I haven't personally tried this approach. It seems like there is an extra first step of creating the video, but the rest of it looks like the standard tus protocol. These is an example app created by the authors of Uppy, so I think you should be able to copy-paste a lot of the stuff from there.
The approach I don't recommend is downloading the file from the tus server and uploading it to Vimeo using the vimeo_me2
gem. Firstly, the download won't be resumable, as the down
gem that shrine-tus
uses doesn't yet support resumable downloads. Secondly, while vimeo_me2
uses the tus protocol for uploading, it doesn't seem to do anything to resume the upload in case of connection errors. It also appears to load the whole file into memory.
In any case, options A and B will be more performant.
ATM I won't be dealing with approach A. Approach B might be what I am looking for. If I implement direct upload to Vimeo from clientside, I need to look after success or error response sent from the Vimeo and send an API request to the mine server and update the video table with Vimeodata_url
if the response is a success.
– p0k8_
Nov 26 '18 at 5:45
ATM I'm not dealing with Oauth. I'll just use the publicaccess_token
from vimeo and every user can upload videos in mine account. (No oauth req.). I looked at vimeo-uppy-thing. It involves whole oauth procedure and I even didn't get much of it. What mine concern is user selects the video from uppy dashboard clicks the Upload button video gets uploaded to Vimeo. That's it (no oauth).
– p0k8_
Nov 26 '18 at 5:49
To my knowledge these are the only two solutions with acceptable performance, and both are implementable.
– janko-m
Nov 26 '18 at 11:59
So, if I need to upload videos to AWS s3 bucket. What approaches should I take? Using uppyaws s3 multipart
plugin.
– p0k8_
Dec 5 '18 at 8:04
Docs say that i need to create an companion server for that?
– p0k8_
Dec 5 '18 at 8:05
|
show 1 more comment
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53445652%2ftus-server-integration-with-shrine-dealing-with-large-uploads-filesize-1-gb%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Author of tus-ruby-server and Shrine here :)
You have two options as far as I'm concerned: use Vimeo's "pull upload", or upload directly to Vimeo.
A. Pull upload
Vimeo's pull upload allows you to give Vimeo the link to your file, and let it download and save the file for you. This should be resumable, because tus-ruby-server supports range requests, and it seems that Vimeo will use that:
We even handle any connectivity issues that might come up.
The vimeo_me2
gem has a method for pull upload. So you can just give it the link to the tus file, e.g if you have a Movie
with a video
attachment:
vimeo_client.pull_upload("Name of video", movie.video.url)
B. Direct upload to Vimeo
Vimeo also implements the tus resumable upload protocol, so theoretically it should be possible to use Uppy to upload directly to Vimeo. In that case you could get rid of tus-ruby-server
.
I haven't personally tried this approach. It seems like there is an extra first step of creating the video, but the rest of it looks like the standard tus protocol. These is an example app created by the authors of Uppy, so I think you should be able to copy-paste a lot of the stuff from there.
The approach I don't recommend is downloading the file from the tus server and uploading it to Vimeo using the vimeo_me2
gem. Firstly, the download won't be resumable, as the down
gem that shrine-tus
uses doesn't yet support resumable downloads. Secondly, while vimeo_me2
uses the tus protocol for uploading, it doesn't seem to do anything to resume the upload in case of connection errors. It also appears to load the whole file into memory.
In any case, options A and B will be more performant.
ATM I won't be dealing with approach A. Approach B might be what I am looking for. If I implement direct upload to Vimeo from clientside, I need to look after success or error response sent from the Vimeo and send an API request to the mine server and update the video table with Vimeodata_url
if the response is a success.
– p0k8_
Nov 26 '18 at 5:45
ATM I'm not dealing with Oauth. I'll just use the publicaccess_token
from vimeo and every user can upload videos in mine account. (No oauth req.). I looked at vimeo-uppy-thing. It involves whole oauth procedure and I even didn't get much of it. What mine concern is user selects the video from uppy dashboard clicks the Upload button video gets uploaded to Vimeo. That's it (no oauth).
– p0k8_
Nov 26 '18 at 5:49
To my knowledge these are the only two solutions with acceptable performance, and both are implementable.
– janko-m
Nov 26 '18 at 11:59
So, if I need to upload videos to AWS s3 bucket. What approaches should I take? Using uppyaws s3 multipart
plugin.
– p0k8_
Dec 5 '18 at 8:04
Docs say that i need to create an companion server for that?
– p0k8_
Dec 5 '18 at 8:05
|
show 1 more comment
Author of tus-ruby-server and Shrine here :)
You have two options as far as I'm concerned: use Vimeo's "pull upload", or upload directly to Vimeo.
A. Pull upload
Vimeo's pull upload allows you to give Vimeo the link to your file, and let it download and save the file for you. This should be resumable, because tus-ruby-server supports range requests, and it seems that Vimeo will use that:
We even handle any connectivity issues that might come up.
The vimeo_me2
gem has a method for pull upload. So you can just give it the link to the tus file, e.g if you have a Movie
with a video
attachment:
vimeo_client.pull_upload("Name of video", movie.video.url)
B. Direct upload to Vimeo
Vimeo also implements the tus resumable upload protocol, so theoretically it should be possible to use Uppy to upload directly to Vimeo. In that case you could get rid of tus-ruby-server
.
I haven't personally tried this approach. It seems like there is an extra first step of creating the video, but the rest of it looks like the standard tus protocol. These is an example app created by the authors of Uppy, so I think you should be able to copy-paste a lot of the stuff from there.
The approach I don't recommend is downloading the file from the tus server and uploading it to Vimeo using the vimeo_me2
gem. Firstly, the download won't be resumable, as the down
gem that shrine-tus
uses doesn't yet support resumable downloads. Secondly, while vimeo_me2
uses the tus protocol for uploading, it doesn't seem to do anything to resume the upload in case of connection errors. It also appears to load the whole file into memory.
In any case, options A and B will be more performant.
ATM I won't be dealing with approach A. Approach B might be what I am looking for. If I implement direct upload to Vimeo from clientside, I need to look after success or error response sent from the Vimeo and send an API request to the mine server and update the video table with Vimeodata_url
if the response is a success.
– p0k8_
Nov 26 '18 at 5:45
ATM I'm not dealing with Oauth. I'll just use the publicaccess_token
from vimeo and every user can upload videos in mine account. (No oauth req.). I looked at vimeo-uppy-thing. It involves whole oauth procedure and I even didn't get much of it. What mine concern is user selects the video from uppy dashboard clicks the Upload button video gets uploaded to Vimeo. That's it (no oauth).
– p0k8_
Nov 26 '18 at 5:49
To my knowledge these are the only two solutions with acceptable performance, and both are implementable.
– janko-m
Nov 26 '18 at 11:59
So, if I need to upload videos to AWS s3 bucket. What approaches should I take? Using uppyaws s3 multipart
plugin.
– p0k8_
Dec 5 '18 at 8:04
Docs say that i need to create an companion server for that?
– p0k8_
Dec 5 '18 at 8:05
|
show 1 more comment
Author of tus-ruby-server and Shrine here :)
You have two options as far as I'm concerned: use Vimeo's "pull upload", or upload directly to Vimeo.
A. Pull upload
Vimeo's pull upload allows you to give Vimeo the link to your file, and let it download and save the file for you. This should be resumable, because tus-ruby-server supports range requests, and it seems that Vimeo will use that:
We even handle any connectivity issues that might come up.
The vimeo_me2
gem has a method for pull upload. So you can just give it the link to the tus file, e.g if you have a Movie
with a video
attachment:
vimeo_client.pull_upload("Name of video", movie.video.url)
B. Direct upload to Vimeo
Vimeo also implements the tus resumable upload protocol, so theoretically it should be possible to use Uppy to upload directly to Vimeo. In that case you could get rid of tus-ruby-server
.
I haven't personally tried this approach. It seems like there is an extra first step of creating the video, but the rest of it looks like the standard tus protocol. These is an example app created by the authors of Uppy, so I think you should be able to copy-paste a lot of the stuff from there.
The approach I don't recommend is downloading the file from the tus server and uploading it to Vimeo using the vimeo_me2
gem. Firstly, the download won't be resumable, as the down
gem that shrine-tus
uses doesn't yet support resumable downloads. Secondly, while vimeo_me2
uses the tus protocol for uploading, it doesn't seem to do anything to resume the upload in case of connection errors. It also appears to load the whole file into memory.
In any case, options A and B will be more performant.
Author of tus-ruby-server and Shrine here :)
You have two options as far as I'm concerned: use Vimeo's "pull upload", or upload directly to Vimeo.
A. Pull upload
Vimeo's pull upload allows you to give Vimeo the link to your file, and let it download and save the file for you. This should be resumable, because tus-ruby-server supports range requests, and it seems that Vimeo will use that:
We even handle any connectivity issues that might come up.
The vimeo_me2
gem has a method for pull upload. So you can just give it the link to the tus file, e.g if you have a Movie
with a video
attachment:
vimeo_client.pull_upload("Name of video", movie.video.url)
B. Direct upload to Vimeo
Vimeo also implements the tus resumable upload protocol, so theoretically it should be possible to use Uppy to upload directly to Vimeo. In that case you could get rid of tus-ruby-server
.
I haven't personally tried this approach. It seems like there is an extra first step of creating the video, but the rest of it looks like the standard tus protocol. These is an example app created by the authors of Uppy, so I think you should be able to copy-paste a lot of the stuff from there.
The approach I don't recommend is downloading the file from the tus server and uploading it to Vimeo using the vimeo_me2
gem. Firstly, the download won't be resumable, as the down
gem that shrine-tus
uses doesn't yet support resumable downloads. Secondly, while vimeo_me2
uses the tus protocol for uploading, it doesn't seem to do anything to resume the upload in case of connection errors. It also appears to load the whole file into memory.
In any case, options A and B will be more performant.
edited Nov 25 '18 at 2:25
answered Nov 23 '18 at 20:08
janko-mjanko-m
3,84042441
3,84042441
ATM I won't be dealing with approach A. Approach B might be what I am looking for. If I implement direct upload to Vimeo from clientside, I need to look after success or error response sent from the Vimeo and send an API request to the mine server and update the video table with Vimeodata_url
if the response is a success.
– p0k8_
Nov 26 '18 at 5:45
ATM I'm not dealing with Oauth. I'll just use the publicaccess_token
from vimeo and every user can upload videos in mine account. (No oauth req.). I looked at vimeo-uppy-thing. It involves whole oauth procedure and I even didn't get much of it. What mine concern is user selects the video from uppy dashboard clicks the Upload button video gets uploaded to Vimeo. That's it (no oauth).
– p0k8_
Nov 26 '18 at 5:49
To my knowledge these are the only two solutions with acceptable performance, and both are implementable.
– janko-m
Nov 26 '18 at 11:59
So, if I need to upload videos to AWS s3 bucket. What approaches should I take? Using uppyaws s3 multipart
plugin.
– p0k8_
Dec 5 '18 at 8:04
Docs say that i need to create an companion server for that?
– p0k8_
Dec 5 '18 at 8:05
|
show 1 more comment
ATM I won't be dealing with approach A. Approach B might be what I am looking for. If I implement direct upload to Vimeo from clientside, I need to look after success or error response sent from the Vimeo and send an API request to the mine server and update the video table with Vimeodata_url
if the response is a success.
– p0k8_
Nov 26 '18 at 5:45
ATM I'm not dealing with Oauth. I'll just use the publicaccess_token
from vimeo and every user can upload videos in mine account. (No oauth req.). I looked at vimeo-uppy-thing. It involves whole oauth procedure and I even didn't get much of it. What mine concern is user selects the video from uppy dashboard clicks the Upload button video gets uploaded to Vimeo. That's it (no oauth).
– p0k8_
Nov 26 '18 at 5:49
To my knowledge these are the only two solutions with acceptable performance, and both are implementable.
– janko-m
Nov 26 '18 at 11:59
So, if I need to upload videos to AWS s3 bucket. What approaches should I take? Using uppyaws s3 multipart
plugin.
– p0k8_
Dec 5 '18 at 8:04
Docs say that i need to create an companion server for that?
– p0k8_
Dec 5 '18 at 8:05
ATM I won't be dealing with approach A. Approach B might be what I am looking for. If I implement direct upload to Vimeo from clientside, I need to look after success or error response sent from the Vimeo and send an API request to the mine server and update the video table with Vimeo
data_url
if the response is a success.– p0k8_
Nov 26 '18 at 5:45
ATM I won't be dealing with approach A. Approach B might be what I am looking for. If I implement direct upload to Vimeo from clientside, I need to look after success or error response sent from the Vimeo and send an API request to the mine server and update the video table with Vimeo
data_url
if the response is a success.– p0k8_
Nov 26 '18 at 5:45
ATM I'm not dealing with Oauth. I'll just use the public
access_token
from vimeo and every user can upload videos in mine account. (No oauth req.). I looked at vimeo-uppy-thing. It involves whole oauth procedure and I even didn't get much of it. What mine concern is user selects the video from uppy dashboard clicks the Upload button video gets uploaded to Vimeo. That's it (no oauth).– p0k8_
Nov 26 '18 at 5:49
ATM I'm not dealing with Oauth. I'll just use the public
access_token
from vimeo and every user can upload videos in mine account. (No oauth req.). I looked at vimeo-uppy-thing. It involves whole oauth procedure and I even didn't get much of it. What mine concern is user selects the video from uppy dashboard clicks the Upload button video gets uploaded to Vimeo. That's it (no oauth).– p0k8_
Nov 26 '18 at 5:49
To my knowledge these are the only two solutions with acceptable performance, and both are implementable.
– janko-m
Nov 26 '18 at 11:59
To my knowledge these are the only two solutions with acceptable performance, and both are implementable.
– janko-m
Nov 26 '18 at 11:59
So, if I need to upload videos to AWS s3 bucket. What approaches should I take? Using uppy
aws s3 multipart
plugin.– p0k8_
Dec 5 '18 at 8:04
So, if I need to upload videos to AWS s3 bucket. What approaches should I take? Using uppy
aws s3 multipart
plugin.– p0k8_
Dec 5 '18 at 8:04
Docs say that i need to create an companion server for that?
– p0k8_
Dec 5 '18 at 8:05
Docs say that i need to create an companion server for that?
– p0k8_
Dec 5 '18 at 8:05
|
show 1 more comment
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53445652%2ftus-server-integration-with-shrine-dealing-with-large-uploads-filesize-1-gb%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown