REACT: Play Videos with paths outside the public directory - reactjs

I have an array of video paths that I want to play in REACT.
The issue is that the videos are outside of the public dir.
Any ideas on how to make this work?

If your link is a web URL, then you can use tag with href attribute to link your video on the web.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a

Ok, so I guess the problem boils down to the following statement -
"You want to serve a few videos saved in a particular directory of your server so that your react application can play them".
Well, in that case, it is somehow like you want to make these videos publically available, so why don't you just move them to a public dir, or make the directory they are in a public one, you can use any web server like nginx to do that. see the following link Use nginx to serve static files from subdirectories of a given directory.
Please note that this solution will make your videos public. If you want only authenticated users to access your video, you should consider making a video streaming api on your server see this link for how to do this in nodejs https://dev.to/abdisalan_js/how-to-code-a-video-streaming-server-using-nodejs-2o0

Related

Embedded HTML page from S3 bucket via iframe can't load resources and media files

We have an s3 bucket where we have multiple folders with different small projects that contain basic, static webpages with an index.html entry point.
The plan is to integrate those static pages within a react-app through an iframe. When we do that with an example page, the embedding of the HTML document works but none of the resources get loaded (image files + stylesheets), throwing the following error:
DOMException: Blocked a frame with origin "BUCKET-DOMAIN" from accessing a cross-origin frame.
When looking up that error I usually find people trying to control some parts of the document rendered within the iframe using the postMessage API. In my case however I only want to make sure that the iframe embeds the website as it is shown on the publically available link with all resources.
I've tried making the S3 bucket specifically serve just one static website, thinking that this might influence the way the embedding works. However it's still the same problem.
Pretty sure there's a very simple solution to this and something I'm overlooking.
One potential option would be to give the S3 bucket a subdomain on our site, but I don't see how that would work for example in local development.
If you bucket is public then you can access with your cdn link . Otherwise You will configure it with aws sdk. I think this link will help you
Access files stored on Amazon S3 through web browser

React + Next.js download a file from server to client

Im looking for a way to serve a PDF file so the users can download it by clicking on a button,Im using React and Next.js for SSR.
What would be the best approach for this?
placing the documents inside public folder and using the following a tag seems to work
<a download href="filename.pdf" > Get file </a>
I dont know if this is an ideal solution because those files are occupying space in the server,I was thinking about using a cdn,or maybe upload it to some kind of storaging service

How to save image assets on Firebase and use their public URLs in my app?

I need to store images on Firebase and display them in my React application using Firebase.
This is not an image upload feature. I am talking about images that will be displayed in information static pages.
The closest resource I found was Firebase's Cloud Storage, however, this aimed at apps that allow users to upload their own content.
I also found Firebase's Hosting page, I followed some of the steps which include installing the firebase CLI. However, it doesn't make it clear how to save my image assets there. Maybe FTP?
The best alternative I found so far was to save my images in my app's public folder, however, from a performance standpoint it would be more interesting to have those images saved on Firebase directly and use their URLs in my application.
The solution was simpler than I thought.
You can simply access your app page on Firebase, go in the "Develop" section and choose "Storage".
In the "Storage" page you can upload files and a default public URL will be generated for them. I chose the "Download URL" for each image that I uploaded.

How to show Image from local drive in Angular JS [duplicate]

I'm trying to retrieve a picture from my file system after a good storage,(instead of putting it in the database I copy it to the disc and i put the path to the db)
I had store the picture to c:\images\ folder and supposing that the name the complete path is c:\images\mypic.jpg
when I try to retrieve it a set the img src attribute to <img src="c:\images\mypic.jps"> by using some java code
in the browser console I found this error Not allowed to load local resource: file:///C://images//mypic.jpg
Question: how to fix these path problem ? where Should I store the pictures ? and from where should I retrieve them ?
sending tag <img src="c:\images\mypic.jpg"> would cause user browser to access image from his filesystem.
if you have to store images in folder located in c:\images i would suggest to create an servlet like images.jsp, that as a parameter takes name of a file, then sets servlet response content to an image/jpg and then loads bytes of image from server location and put it to a response.
But what you use to create your application? is it pure servlet? Spring? JSF?
Here you can find some info about, how to do it.
In Chrome, you are supposed to be able to allow this capability with a runtime flag --allow-file-access-from-files
However, it looks like there is a problem with current versions of Chrome (37, 38) where this doesn't work unless you also pass the runtime flag --disable-web-security
That's an unacceptable solution, except perhaps as a short-term workaround, but it has been identified as an issue:
https://code.google.com/p/chromium/issues/detail?id=379206
You have Two alternatives :
First one is to create a ServletImageLoader that would take as a parameter an identifier of your image (the path of the image or a hash) that you will use inside the Servlet to handle your image, and it will print to the response stream the loaded image from the server.
Second one is to create a folder inside your application's ROOT folder and just save the relative path to your images.
Many browsers have changed their security policies to no longer allow reading data directly from file shares or even local resources. You need to either place the files somewhere that your tomcat instance can serve them up and put a "regular" http url in the html you generate. This can be accomplished by either providing a servlet which reads and provides the file putting the file into a directory where tomcat will serve it up as "static" content.
The concept of http location and disk location is different. What you need to do is:
for uploaded file summer.jpg
move that under a known (to the application) location to disk, e.g c:\images\summer.jpg
insert into db record representing the image with text summer.jpg
to display it use plain <img src="images/summer.jpg" />
you need something (e.g apache) that will serve c:\images\ under your application's /images. If you cannot do this then in step #2 you need to save somewhere under your web root, e.g c:\my-applications\demo-app\build\images
This error means you can not directly load data from file system because there are security issues behind this. The only solution that I know is create a web service to serve load files.
Here is a simple expressjs solution if you just want to run this app locally and security is not a concern:
On your server.js or app.js file, add the following:
app.use('/local-files', express.static('/'));
That will serve your ENTIRE root directory under /local-files. Needless to say this is a really bad idea if you're planning to deploy this app anywhere other than your local machine.
Now, you can simply do:
<img src="/local-files/images/mypic.jps"/>
note: I'm running macOS. If you're using Windows you may have to search and remove 'C:\' from the path string
Do not use ABSOLUTE PATH to refer to the name of the image for example: C:/xamp/www/Archivos/images/templatemo_image_02_opt_20160401-1244.jpg. You must use the reference to its location within webserver. For example using ../../Archivos/images/templatemo_image_02_opt_20160401-1244.jpg depending on where your process is running.

Downloading files from URL

I have a question related to a security on website. Lets say that a visitor is currently on a http://www.example.com/. And visitor navigates to gallery page. There he can find unique images that are displayed to him according to his log in details he provided earlier. A simple inspect on a picture shows him the URL to that picture: www.example.com/images/image_589326.png.
My question is: Is there a way for a user to somehow download all the files from
www.example.com/images/ folder, or somehow find the names of all images that are in that folder and simply view them with absolute URL.
Yes, that is possible. There are two main ways that this can be achieved: scraping & enumeration.
Through scraping someone would make a script that would look at the gallery page and make a list of all of the images, and then download them all.
Enumeration would just request http://www.example.com/images/image_000001.png through http://www.example.com/images/image_999999.png and download of the images that are present.
If the site is not proprely set up you may also be able to get a directory listing from http://www.example.com/images to see all of the files in the images/ directory.

Resources