0:33
hi this is Habib ran and welcome to my
0:36
hi this is Habib ran and welcome to my
0:36
hi this is Habib ran and welcome to my show as your essential series uh this is
0:39
show as your essential series uh this is
0:39
show as your essential series uh this is episode three and we will be talking
0:42
episode three and we will be talking
0:42
episode three and we will be talking about mastering aure blob storage okay
0:46
about mastering aure blob storage okay
0:46
about mastering aure blob storage okay so first of all uh we will talk about uh
0:49
so first of all uh we will talk about uh
0:49
so first of all uh we will talk about uh blob storage introduction then we have
0:52
blob storage introduction then we have
0:52
blob storage introduction then we have types of blob storage uh then we will
0:55
types of blob storage uh then we will
0:56
types of blob storage uh then we will talk about security and encryption
0:58
talk about security and encryption
0:58
talk about security and encryption features provided by blob St storage and
1:01
features provided by blob St storage and
1:01
features provided by blob St storage and then we will have hands-on experience
1:04
then we will have hands-on experience
1:04
then we will have hands-on experience with asp.net called MVC we will
1:07
with asp.net called MVC we will
1:07
with asp.net called MVC we will integrate with a simple application and
1:09
integrate with a simple application and
1:09
integrate with a simple application and we will talk about real uh word use
1:12
we will talk about real uh word use
1:12
we will talk about real uh word use cases so this is your host habiban and
1:16
cases so this is your host habiban and
1:16
cases so this is your host habiban and I'm two times cop Corner MVP Microsoft
1:19
I'm two times cop Corner MVP Microsoft
1:19
I'm two times cop Corner MVP Microsoft certified solution developer and
1:22
certified solution developer and
1:22
certified solution developer and currently working as a lead software
1:24
currently working as a lead software
1:24
currently working as a lead software developer at now software so let's start
1:28
developer at now software so let's start
1:28
developer at now software so let's start this uh first of all uh the first of the
1:31
this uh first of all uh the first of the
1:32
this uh first of all uh the first of the main thing about aure blob storage is
1:34
main thing about aure blob storage is
1:34
main thing about aure blob storage is scalable so you don't have to be worried
1:37
scalable so you don't have to be worried
1:37
scalable so you don't have to be worried about the scalability of azour blob
1:39
about the scalability of azour blob
1:39
about the scalability of azour blob storage it doesn't matter how many
1:42
storage it doesn't matter how many
1:42
storage it doesn't matter how many requests uh you need or how many users
1:44
requests uh you need or how many users
1:44
requests uh you need or how many users need to access your data uh it's always
1:47
need to access your data uh it's always
1:47
need to access your data uh it's always scalable you can uh duplicate your data
1:51
scalable you can uh duplicate your data
1:51
scalable you can uh duplicate your data on multiple regions uh also it's a
1:54
on multiple regions uh also it's a
1:54
on multiple regions uh also it's a durable storage option so you don't have
1:58
durable storage option so you don't have
1:58
durable storage option so you don't have to be worried about the durable ability
2:00
to be worried about the durable ability
2:00
to be worried about the durable ability of your storage every time user will
2:03
of your storage every time user will
2:03
of your storage every time user will access will get the same results then uh
2:09
access will get the same results then uh
2:09
access will get the same results then uh secure object storage solution asure
2:11
secure object storage solution asure
2:11
secure object storage solution asure provide us different encryption and
2:14
provide us different encryption and
2:14
provide us different encryption and Security Options and using that you can
2:17
Security Options and using that you can
2:17
Security Options and using that you can uh you can handle your exess of your
2:19
uh you can handle your exess of your
2:19
uh you can handle your exess of your storage data so it's secure to use then
2:22
storage data so it's secure to use then
2:22
storage data so it's secure to use then we have a large amount of data as your
2:25
we have a large amount of data as your
2:25
we have a large amount of data as your blob storage is good good for storing uh
2:29
blob storage is good good for storing uh
2:29
blob storage is good good for storing uh large amount of data especially for
2:32
large amount of data especially for
2:32
large amount of data especially for images uh or files or any type of binary
2:35
images uh or files or any type of binary
2:35
images uh or files or any type of binary data you can store gigabytes or t
2:38
data you can store gigabytes or t
2:39
data you can store gigabytes or t terabytes of
2:40
terabytes of data uh then you can also store
2:43
data uh then you can also store
2:43
data uh then you can also store unstructured data text or binary data so
2:46
unstructured data text or binary data so
2:46
unstructured data text or binary data so it also supports all types of data in
2:49
it also supports all types of data in
2:49
it also supports all types of data in aor Blob storage uh the main uh pros of
2:52
aor Blob storage uh the main uh pros of
2:53
aor Blob storage uh the main uh pros of Azor blob storage is a flexible storage
2:56
Azor blob storage is a flexible storage
2:56
Azor blob storage is a flexible storage DS so it means uh as your blob storage
2:59
DS so it means uh as your blob storage
3:00
DS so it means uh as your blob storage provide us uh different storage tiers
3:02
provide us uh different storage tiers
3:02
provide us uh different storage tiers with different rates and all these
3:05
with different rates and all these
3:05
with different rates and all these storage tiers have
3:08
storage tiers have different uh options for example first
3:11
different uh options for example first
3:11
different uh options for example first of all we have hot uh storage Deer uh if
3:15
of all we have hot uh storage Deer uh if
3:15
of all we have hot uh storage Deer uh if your data is uh accessible uh a lot of
3:20
your data is uh accessible uh a lot of
3:20
your data is uh accessible uh a lot of times by a different users and it means
3:23
times by a different users and it means
3:23
times by a different users and it means you have a lot of traffic then the best
3:25
you have a lot of traffic then the best
3:25
you have a lot of traffic then the best option for tier is hot storage then you
3:28
option for tier is hot storage then you
3:28
option for tier is hot storage then you have a cool uh which is uh basically uh
3:31
have a cool uh which is uh basically uh
3:31
have a cool uh which is uh basically uh less expensive than hot storage and your
3:35
less expensive than hot storage and your
3:35
less expensive than hot storage and your data is accessible use by users very uh
3:40
data is accessible use by users very uh
3:40
data is accessible use by users very uh normally not too much frequently and
3:43
normally not too much frequently and
3:43
normally not too much frequently and then we have an archive
3:46
here uh if your data is archived for a
3:50
here uh if your data is archived for a
3:50
here uh if your data is archived for a large uh time span then archive is the
3:53
large uh time span then archive is the
3:53
large uh time span then archive is the best option because it have uh cheaper
3:56
best option because it have uh cheaper
3:56
best option because it have uh cheaper uh pricing options as compared to hot
3:58
uh pricing options as compared to hot
3:58
uh pricing options as compared to hot and cool so these are different tiers
4:00
and cool so these are different tiers
4:00
and cool so these are different tiers available then we have work seamlessly
4:02
available then we have work seamlessly
4:02
available then we have work seamlessly with Azure CDN so uh basically you can
4:06
with Azure CDN so uh basically you can
4:06
with Azure CDN so uh basically you can host or you can uh add your static data
4:10
host or you can uh add your static data
4:10
host or you can uh add your static data or static assets of any website on uh
4:13
or static assets of any website on uh
4:13
or static assets of any website on uh your asure blob storage and then it can
4:16
your asure blob storage and then it can
4:16
your asure blob storage and then it can be connected with Azure CDN uh for uh
4:20
be connected with Azure CDN uh for uh
4:20
be connected with Azure CDN uh for uh more optimized uh content delivery uh so
4:23
more optimized uh content delivery uh so
4:23
more optimized uh content delivery uh so it uh Works seamlessly with aor CDN uh
4:26
it uh Works seamlessly with aor CDN uh
4:26
it uh Works seamlessly with aor CDN uh then we have data analytics uh you can
4:30
then we have data analytics uh you can
4:30
then we have data analytics uh you can integrate your Azure blob
4:33
integrate your Azure blob
4:33
integrate your Azure blob storage uh with Azure data leak storage
4:36
storage uh with Azure data leak storage
4:36
storage uh with Azure data leak storage so it means you can generate uh
4:39
so it means you can generate uh
4:39
so it means you can generate uh different analytics and reports on the
4:41
different analytics and reports on the
4:41
different analytics and reports on the basis of your data which can help you uh
4:44
basis of your data which can help you uh
4:44
basis of your data which can help you uh to make your different business
4:46
to make your different business
4:46
to make your different business decisions and it's uh very easy to
4:50
decisions and it's uh very easy to
4:50
decisions and it's uh very easy to use then we have sports point in time
4:53
use then we have sports point in time
4:53
use then we have sports point in time restore and automatic backups uh so for
4:57
restore and automatic backups uh so for
4:57
restore and automatic backups uh so for all as your uh infrastructure you can
4:59
all as your uh infrastructure you can
4:59
all as your uh infrastructure you can use aure blob storage for uh saving your
5:03
use aure blob storage for uh saving your
5:03
use aure blob storage for uh saving your uh database backups or virtual machine
5:06
uh database backups or virtual machine
5:06
uh database backups or virtual machine backups or any type of backup inide as
5:09
backups or any type of backup inide as
5:09
backups or any type of backup inide as your blob storage and you can res
5:12
your blob storage and you can res
5:12
your blob storage and you can res restore just by clicking uh few options
5:15
restore just by clicking uh few options
5:15
restore just by clicking uh few options so this is the main benefit of aure blob
5:18
so this is the main benefit of aure blob
5:18
so this is the main benefit of aure blob storage uh then we have different types
5:20
storage uh then we have different types
5:21
storage uh then we have different types of blob storage uh first of all we have
5:24
of blob storage uh first of all we have
5:24
of blob storage uh first of all we have a block blob it is basically used for uh
5:27
a block blob it is basically used for uh
5:27
a block blob it is basically used for uh text and binary data storage
5:30
text and binary data storage
5:30
text and binary data storage it's ideal for uh saving files images
5:34
it's ideal for uh saving files images
5:34
it's ideal for uh saving files images videos and backup data and it supports
5:37
videos and backup data and it supports
5:37
videos and backup data and it supports large files uh large volume of files and
5:42
large files uh large volume of files and
5:42
large files uh large volume of files and asure blob
5:44
asure blob storage can break them into smaller
5:47
storage can break them into smaller
5:47
storage can break them into smaller blogs for easy upload and easy download
5:50
blogs for easy upload and easy download
5:50
blogs for easy upload and easy download so there are different options available
5:53
so there are different options available
5:53
so there are different options available uh then we have append blobs it is
5:55
uh then we have append blobs it is
5:55
uh then we have append blobs it is basically optimized for append
5:58
basically optimized for append
5:58
basically optimized for append operations it is is uh good for the
6:01
operations it is is uh good for the
6:01
operations it is is uh good for the solutions where you have to upload or
6:04
solutions where you have to upload or
6:04
solutions where you have to upload or you have to append your data constantly
6:07
you have to append your data constantly
6:07
you have to append your data constantly into your asure blob storage and it can
6:11
into your asure blob storage and it can
6:11
into your asure blob storage and it can uh provide you feature for adding new
6:13
uh provide you feature for adding new
6:14
uh provide you feature for adding new blogs into your blob existing blob
6:16
blogs into your blob existing blob
6:16
blogs into your blob existing blob storage uh files so this is very good
6:19
storage uh files so this is very good
6:19
storage uh files so this is very good approach and you can use this for
6:21
approach and you can use this for
6:21
approach and you can use this for Telemetry data or any
6:24
Telemetry data or any
6:24
Telemetry data or any log data then we have a page blob uh
6:28
log data then we have a page blob uh
6:28
log data then we have a page blob uh this uh one is basically optimized for
6:30
this uh one is basically optimized for
6:30
this uh one is basically optimized for uh random operations read and write
6:33
uh random operations read and write
6:33
uh random operations read and write random operations so that's why it is
6:36
random operations so that's why it is
6:36
random operations so that's why it is used for virtual hard diss of your as
6:40
used for virtual hard diss of your as
6:40
used for virtual hard diss of your as your virtual machines so you can use
6:42
your virtual machines so you can use
6:42
your virtual machines so you can use this then it provide uh consistent
6:47
this then it provide uh consistent
6:47
this then it provide uh consistent bite uh optimization for frequent read
6:50
bite uh optimization for frequent read
6:50
bite uh optimization for frequent read write access so these are uh different
6:52
write access so these are uh different
6:52
write access so these are uh different blob storage types
6:55
blob storage types uh in our session basically we will be
7:00
uh in our session basically we will be
7:00
uh in our session basically we will be working on a Blog blobs and we will be
7:02
working on a Blog blobs and we will be
7:02
working on a Blog blobs and we will be integrating with aspor MVC
7:05
integrating with aspor MVC
7:05
integrating with aspor MVC solution then we have few uh security
7:08
solution then we have few uh security
7:08
solution then we have few uh security and encryption
7:10
and encryption features provided by aor blog storage
7:13
features provided by aor blog storage
7:13
features provided by aor blog storage and first of all is server side
7:15
and first of all is server side
7:15
and first of all is server side encryption so when you are uploading
7:18
encryption so when you are uploading
7:18
encryption so when you are uploading your data uh to your Azure blob storage
7:21
your data uh to your Azure blob storage
7:21
your data uh to your Azure blob storage Microsoft Azure will automatically encr
7:24
Microsoft Azure will automatically encr
7:24
Microsoft Azure will automatically encr your data encrypt your data and then
7:26
your data encrypt your data and then
7:26
your data encrypt your data and then save it and whenever you are retrieving
7:28
save it and whenever you are retrieving
7:28
save it and whenever you are retrieving your data it will will decrypt it and uh
7:31
your data it will will decrypt it and uh
7:31
your data it will will decrypt it and uh resend uh to you so this is uh the
7:34
resend uh to you so this is uh the
7:34
resend uh to you so this is uh the encryption provided by server side uh by
7:37
encryption provided by server side uh by
7:37
encryption provided by server side uh by Microsoft as your storage then we have
7:41
Microsoft as your storage then we have
7:41
Microsoft as your storage then we have uh different encryption options while
7:44
uh different encryption options while
7:44
uh different encryption options while request Transit uh and one of them is
7:46
request Transit uh and one of them is
7:46
request Transit uh and one of them is https so you can use a hyper text
7:49
https so you can use a hyper text
7:49
https so you can use a hyper text transfer uh secure protocol for
7:51
transfer uh secure protocol for
7:51
transfer uh secure protocol for accessing your files uh over the network
7:54
accessing your files uh over the network
7:54
accessing your files uh over the network so that uh no one can interrupt your
7:57
so that uh no one can interrupt your
7:57
so that uh no one can interrupt your data or encrypt your data so this is the
8:00
data or encrypt your data so this is the
8:01
data or encrypt your data so this is the uh transient option then we have access
8:04
uh transient option then we have access
8:04
uh transient option then we have access control uh so there are different
8:07
control uh so there are different
8:07
control uh so there are different options by using which you can uh you
8:10
options by using which you can uh you
8:10
options by using which you can uh you can apply different permissions on your
8:13
can apply different permissions on your
8:13
can apply different permissions on your Azure blob uh so that you can provide
8:17
Azure blob uh so that you can provide
8:17
Azure blob uh so that you can provide access to other colleagues or other
8:20
access to other colleagues or other
8:20
access to other colleagues or other systems and one of them is shared access
8:23
systems and one of them is shared access
8:23
systems and one of them is shared access signature it's a basically token uh
8:26
signature it's a basically token uh
8:26
signature it's a basically token uh generated and this token is basically
8:29
generated and this token is basically
8:29
generated and this token is basically used for accessing your blob storage
8:31
used for accessing your blob storage
8:31
used for accessing your blob storage instead of using client token so this
8:33
instead of using client token so this
8:33
instead of using client token so this one is used and then we have role based
8:36
one is used and then we have role based
8:36
one is used and then we have role based Access Control Microsoft Azure blob
8:38
Access Control Microsoft Azure blob
8:38
Access Control Microsoft Azure blob storage can be integrated
8:41
storage can be integrated
8:41
storage can be integrated with aure active directory so we can
8:45
with aure active directory so we can
8:46
with aure active directory so we can provide different roles and groups with
8:48
provide different roles and groups with
8:48
provide different roles and groups with different permissions and they can
8:50
different permissions and they can
8:50
different permissions and they can access or aure blob
8:52
access or aure blob storage then we have stored access uh
8:55
storage then we have stored access uh
8:55
storage then we have stored access uh policies we can make different policies
8:58
policies we can make different policies
8:58
policies we can make different policies where we can uh we can allow or deny
9:00
where we can uh we can allow or deny
9:01
where we can uh we can allow or deny specific IP addresses or different
9:03
specific IP addresses or different
9:03
specific IP addresses or different network rules uh which can access our
9:06
network rules uh which can access our
9:06
network rules uh which can access our blob data uh then we have network
9:09
blob data uh then we have network
9:09
blob data uh then we have network security we can integrate aure blob with
9:12
security we can integrate aure blob with
9:12
security we can integrate aure blob with aure virtual network uh and we can also
9:15
aure virtual network uh and we can also
9:15
aure virtual network uh and we can also create private end points which are only
9:18
create private end points which are only
9:18
create private end points which are only accessible to that specific user uh we
9:21
accessible to that specific user uh we
9:21
accessible to that specific user uh we can also have Firebase firewall rules
9:24
can also have Firebase firewall rules
9:24
can also have Firebase firewall rules firewall rules can apply a different
9:28
firewall rules can apply a different
9:28
firewall rules can apply a different permissions or different accessibility
9:31
permissions or different accessibility
9:31
permissions or different accessibility uh settings on your IP address or port
9:34
uh settings on your IP address or port
9:34
uh settings on your IP address or port and only those IP addresses can access
9:36
and only those IP addresses can access
9:36
and only those IP addresses can access your data so these are different options
9:39
your data so these are different options
9:39
your data so these are different options then we have audit and monitoring you
9:41
then we have audit and monitoring you
9:41
then we have audit and monitoring you can use Azure monitor uh with as your
9:46
can use Azure monitor uh with as your
9:46
can use Azure monitor uh with as your blob
9:47
blob storage this option uh basically uh use
9:52
storage this option uh basically uh use
9:52
storage this option uh basically uh use tetre data for monitoring your storage
9:55
tetre data for monitoring your storage
9:55
tetre data for monitoring your storage account then we have a security Center
9:57
account then we have a security Center
9:57
account then we have a security Center which provides different insights of
9:59
which provides different insights of
9:59
which provides different insights of about the Securities and if there is any
10:01
about the Securities and if there is any
10:01
about the Securities and if there is any risk uh it will create an alert to you
10:04
risk uh it will create an alert to you
10:04
risk uh it will create an alert to you then we have activity log activity log
10:07
then we have activity log activity log
10:07
then we have activity log activity log basically record all the operations
10:09
basically record all the operations
10:09
basically record all the operations which are being performed uh on your
10:12
which are being performed uh on your
10:12
which are being performed uh on your aure blob account uh and those
10:14
aure blob account uh and those
10:14
aure blob account uh and those operations can be any create update or
10:17
operations can be any create update or
10:17
operations can be any create update or delete operation any operation which is
10:19
delete operation any operation which is
10:19
delete operation any operation which is happening on your storage account will
10:21
happening on your storage account will
10:21
happening on your storage account will be logged
10:23
be logged here uh and few real word use cases for
10:27
here uh and few real word use cases for
10:27
here uh and few real word use cases for example you have uh a media website you
10:31
example you have uh a media website you
10:31
example you have uh a media website you have large videos and large files which
10:34
have large videos and large files which
10:34
have large videos and large files which are rendering on your website so you can
10:37
are rendering on your website so you can
10:37
are rendering on your website so you can use Azure blob for that purpose you can
10:40
use Azure blob for that purpose you can
10:40
use Azure blob for that purpose you can also use uh aure blob for backup and
10:43
also use uh aure blob for backup and
10:43
also use uh aure blob for backup and Disaster Recovery if uh and you can
10:46
Disaster Recovery if uh and you can
10:46
Disaster Recovery if uh and you can automatically uh Tak backups on
10:50
automatically uh Tak backups on
10:50
automatically uh Tak backups on different typ
10:51
different typ interval of your system and then if
10:54
interval of your system and then if
10:54
interval of your system and then if there is any missish happening you can
10:57
there is any missish happening you can
10:57
there is any missish happening you can recover your uh system from from blob
11:00
recover your uh system from from blob
11:00
recover your uh system from from blob storage you can also host your static
11:03
storage you can also host your static
11:03
storage you can also host your static websites on Azure blob storage and you
11:06
websites on Azure blob storage and you
11:06
websites on Azure blob storage and you can integrate it with CDN uh for
11:09
can integrate it with CDN uh for
11:09
can integrate it with CDN uh for providing a more optimized uh solution
11:12
providing a more optimized uh solution
11:12
providing a more optimized uh solution you can also use this for archival
11:15
you can also use this for archival
11:15
you can also use this for archival storage for example you have a hospital
11:18
storage for example you have a hospital
11:18
storage for example you have a hospital or any Clinic where you have to record
11:21
or any Clinic where you have to record
11:21
or any Clinic where you have to record your patients data for uh many years so
11:25
your patients data for uh many years so
11:25
your patients data for uh many years so this is the best option uh you can
11:27
this is the best option uh you can
11:27
this is the best option uh you can create uh an archive tier which is
11:30
create uh an archive tier which is
11:30
create uh an archive tier which is basically cheaper as compared to other
11:33
basically cheaper as compared to other
11:33
basically cheaper as compared to other options and you can arive for uh many
11:37
options and you can arive for uh many
11:37
options and you can arive for uh many years on Z blow storage so these are few
11:41
years on Z blow storage so these are few
11:41
years on Z blow storage so these are few real word cases now I will move uh to
11:43
real word cases now I will move uh to
11:43
real word cases now I will move uh to the Practical session of our show where
11:47
the Practical session of our show where
11:47
the Practical session of our show where we will create an asp.net MVC
11:50
we will create an asp.net MVC
11:50
we will create an asp.net MVC application and inside that application
11:52
application and inside that application
11:53
application and inside that application we will uh we will be accessing as your
11:57
we will uh we will be accessing as your
11:57
we will uh we will be accessing as your blob storage
12:00
blob storage uh before moving to this solution uh let
12:02
uh before moving to this solution uh let
12:02
uh before moving to this solution uh let me share you uh the directory or the
12:07
me share you uh the directory or the
12:07
me share you uh the directory or the GitHub repository where I'm storing my
12:10
GitHub repository where I'm storing my
12:10
GitHub repository where I'm storing my code so this is basically a repository
12:13
code so this is basically a repository
12:13
code so this is basically a repository you can access it AB developer Dash
12:17
you can access it AB developer Dash
12:17
you can access it AB developer Dash slash as your essential series uh so you
12:20
slash as your essential series uh so you
12:20
slash as your essential series uh so you can access it it's a public repo and for
12:23
can access it it's a public repo and for
12:23
can access it it's a public repo and for each branch I have a different uh for
12:26
each branch I have a different uh for
12:26
each branch I have a different uh for each so I have a different branch and
12:29
each so I have a different branch and
12:29
each so I have a different branch and inside that Branch I have a new project
12:32
inside that Branch I have a new project
12:32
inside that Branch I have a new project uh which basically contains the code of
12:34
uh which basically contains the code of
12:35
uh which basically contains the code of our show so let's move to this I already
12:39
our show so let's move to this I already
12:39
our show so let's move to this I already have created an asp.net MVC
12:43
have created an asp.net MVC
12:43
have created an asp.net MVC application this is uh basically
12:45
application this is uh basically
12:45
application this is uh basically currently an empty application so I will
12:48
currently an empty application so I will
12:48
currently an empty application so I will move with this first of all uh the main
12:52
move with this first of all uh the main
12:52
move with this first of all uh the main thing I need to do is uh I need to
12:55
thing I need to do is uh I need to
12:55
thing I need to do is uh I need to install a nugget package for aure blob
12:59
install a nugget package for aure blob
12:59
install a nugget package for aure blob storage so I will install a package uh
13:02
storage so I will install a package uh
13:02
storage so I will install a package uh it's basically AO
13:05
it's basically AO do storage.
13:10
blob so this package is provided by Microsoft
13:14
so this package is provided by Microsoft
13:14
so this package is provided by Microsoft I already have installed this so you
13:16
I already have installed this so you
13:16
I already have installed this so you just need this package
13:19
just need this package
13:19
just need this package uh to access your uh blob storage
13:23
uh to access your uh blob storage
13:23
uh to access your uh blob storage account so this package is already
13:26
account so this package is already
13:26
account so this package is already installed uh currently I'm using Azor
13:30
installed uh currently I'm using Azor
13:30
installed uh currently I'm using Azor right which is basically my which is
13:33
right which is basically my which is
13:33
right which is basically my which is basically as your
13:35
basically as your storage account emulator so I already
13:38
storage account emulator so I already
13:38
storage account emulator so I already have a connection with that if you are
13:40
have a connection with that if you are
13:40
have a connection with that if you are interested to uh connect with your local
13:42
interested to uh connect with your local
13:42
interested to uh connect with your local storage account you can click on this
13:44
storage account you can click on this
13:44
storage account you can click on this option and then storage asor Right
13:47
option and then storage asor Right
13:47
option and then storage asor Right emulator if you will click on next
13:49
emulator if you will click on next
13:49
emulator if you will click on next option you need to provide uh your
13:52
option you need to provide uh your
13:52
option you need to provide uh your custom connection string name and the
13:55
custom connection string name and the
13:55
custom connection string name and the option where you want to store your keys
13:57
option where you want to store your keys
13:57
option where you want to store your keys and if when you will click C on this it
13:59
and if when you will click C on this it
13:59
and if when you will click C on this it will create a connection with azoro so
14:03
will create a connection with azoro so
14:03
will create a connection with azoro so and I'm also using another Tool uh which
14:06
and I'm also using another Tool uh which
14:06
and I'm also using another Tool uh which is basically Microsoft Azure storage
14:08
is basically Microsoft Azure storage
14:08
is basically Microsoft Azure storage Explorer uh so this tool basically help
14:11
Explorer uh so this tool basically help
14:11
Explorer uh so this tool basically help me to explore Azure blob storage
14:14
me to explore Azure blob storage
14:14
me to explore Azure blob storage currently I have uh three
14:17
currently I have uh three
14:17
currently I have uh three uh um three blob containers so let me
14:21
uh um three blob containers so let me
14:21
uh um three blob containers so let me explain the structure of your blob
14:24
explain the structure of your blob
14:24
explain the structure of your blob accounts first of all
14:27
accounts first of all
14:27
accounts first of all we have have a storage account on
14:31
we have have a storage account on
14:31
we have have a storage account on Microsoft as your and inside that
14:33
Microsoft as your and inside that
14:33
Microsoft as your and inside that account you have three option one is
14:36
account you have three option one is
14:36
account you have three option one is four option one is block container we
14:37
four option one is block container we
14:37
four option one is block container we have file shares we have cues and then
14:40
have file shares we have cues and then
14:40
have file shares we have cues and then we have tables if we move to blob blob
14:44
we have tables if we move to blob blob
14:44
we have tables if we move to blob blob storage and inside blob storage the next
14:46
storage and inside blob storage the next
14:46
storage and inside blob storage the next option is blob containers containers are
14:49
option is blob containers containers are
14:49
option is blob containers containers are uh just like uh your viritual
14:51
uh just like uh your viritual
14:51
uh just like uh your viritual directories where you can uh save uh
14:54
directories where you can uh save uh
14:54
directories where you can uh save uh data of different things for example you
14:57
data of different things for example you
14:57
data of different things for example you can create one container for saving
14:59
can create one container for saving
14:59
can create one container for saving profile images you can create another
15:02
profile images you can create another
15:02
profile images you can create another container for saving other media file uh
15:05
container for saving other media file uh
15:05
container for saving other media file uh so let's create a blog container here
15:08
so let's create a blog container here
15:08
so let's create a blog container here and in this case my blob container name
15:12
and in this case my blob container name
15:12
and in this case my blob container name is my images okay so I will be using
15:16
is my images okay so I will be using
15:16
is my images okay so I will be using this uh container for saving my data
15:20
this uh container for saving my data
15:20
this uh container for saving my data currently uh there is no data inside
15:22
currently uh there is no data inside
15:22
currently uh there is no data inside this blob container and I will upload a
15:26
this blob container and I will upload a
15:26
this blob container and I will upload a file and its type is and I have a one
15:30
file and its type is and I have a one
15:30
file and its type is and I have a one code file
15:34
code file uh let me upload
15:38
it so currently it's uploading my file
15:42
it so currently it's uploading my file
15:42
it so currently it's uploading my file so my file has been uploaded okay uh
15:46
so my file has been uploaded okay uh
15:46
so my file has been uploaded okay uh let's move to the code where I will
15:48
let's move to the code where I will
15:48
let's move to the code where I will write a code for accessing uh my blob
15:51
write a code for accessing uh my blob
15:51
write a code for accessing uh my blob storage first of all I will create a new
15:54
storage first of all I will create a new
15:55
storage first of all I will create a new controller uh this controller will be uh
15:58
controller uh this controller will be uh
15:58
controller uh this controller will be uh an empty
16:01
uh controller and I will name
16:08
it media control or I can say image controller so
16:12
control or I can say image controller so
16:12
control or I can say image controller so images controller I will be using this
16:14
images controller I will be using this
16:14
images controller I will be using this controller for
16:16
controller for uploading uploading previewing and then
16:19
uploading uploading previewing and then
16:20
uploading uploading previewing and then deleting different blob storage
16:23
deleting different blob storage
16:23
deleting different blob storage files okay so first of
16:25
files okay so first of
16:25
files okay so first of all I need uh I need to create a blob
16:30
all I need uh I need to create a blob
16:30
all I need uh I need to create a blob client so this uh client will be uh I
16:35
client so this uh client will be uh I
16:35
client so this uh client will be uh I will say blob client
16:39
service this uh client
16:43
service this uh client
16:43
service this uh client will be
16:46
will be using I will use this client uh for
16:49
using I will use this client uh for
16:49
using I will use this client uh for accessing uh blob
16:51
accessing uh blob storage uh let me create a new
16:53
storage uh let me create a new
16:53
storage uh let me create a new Constructor and inside this Constructor
16:56
Constructor and inside this Constructor
16:56
Constructor and inside this Constructor I need
16:57
I need to create a blob service client and
17:01
to create a blob service client and
17:01
to create a blob service client and inside this I need to provide my
17:03
inside this I need to provide my
17:03
inside this I need to provide my connection
17:05
connection string as I am using uh aoide so I can
17:11
string as I am using uh aoide so I can
17:11
string as I am using uh aoide so I can just use this setting and it will
17:14
just use this setting and it will
17:14
just use this setting and it will automatically connect me with local
17:17
automatically connect me with local
17:17
automatically connect me with local development storage account uh okay this
17:21
development storage account uh okay this
17:21
development storage account uh okay this was the first option of creating client
17:23
was the first option of creating client
17:23
was the first option of creating client so my client has been initialized uh the
17:26
so my client has been initialized uh the
17:26
so my client has been initialized uh the next option is creating a container
17:29
next option is creating a container
17:29
next option is creating a container client uh I already have created a
17:34
client uh I already have created a
17:34
client uh I already have created a container so now I will uh connect with
17:38
container so now I will uh connect with
17:38
container so now I will uh connect with that
17:40
that container so this is blob container
17:43
container so this is blob container
17:43
container so this is blob container client and in my code I will initialize
17:48
client and in my code I will initialize
17:48
client and in my code I will initialize container client and inside this
17:52
container client and inside this
17:52
container client and inside this client I
17:57
uh I can and also call this blob client
18:02
uh I can and also call this blob client
18:02
uh I can and also call this blob client dot get Blob client container and here I
18:06
dot get Blob client container and here I
18:06
dot get Blob client container and here I need to provide my container name so
18:10
need to provide my container name so
18:10
need to provide my container name so let's create a constant here for my
18:12
let's create a constant here for my
18:12
let's create a constant here for my container
18:16
name and my container name
18:19
name and my container name
18:19
name and my container name is my images okay now pass this
18:23
is my images okay now pass this
18:23
is my images okay now pass this container name into get Blob container
18:26
container name into get Blob container
18:26
container name into get Blob container client function
18:29
client function I will say container name so my basic
18:32
I will say container name so my basic
18:32
I will say container name so my basic infrastructure is ready now next option
18:34
infrastructure is ready now next option
18:34
infrastructure is ready now next option is I need to
18:36
is I need to get my blob containers uh files inside
18:41
get my blob containers uh files inside
18:41
get my blob containers uh files inside this index action of let's write this
18:45
this index action of let's write this
18:45
this index action of let's write this container client that get blobs so this
18:48
container client that get blobs so this
18:48
container client that get blobs so this function will gets all the blobs which
18:54
function will gets all the blobs which
18:54
function will gets all the blobs which are currently uploaded inside
19:03
I uh my images contain I will pass this
19:06
uh my images contain I will pass this
19:06
uh my images contain I will pass this blobs to my asp.net MVC View and as you
19:10
blobs to my asp.net MVC View and as you
19:10
blobs to my asp.net MVC View and as you can see it's type is as your pageable
19:12
can see it's type is as your pageable
19:12
can see it's type is as your pageable and then blob item so let's create a new
19:15
and then blob item so let's create a new
19:15
and then blob item so let's create a new view this view basically will be showing
19:19
view this view basically will be showing
19:19
view this view basically will be showing a list of of all the aure uh blobs
19:25
a list of of all the aure uh blobs
19:25
a list of of all the aure uh blobs inside my container so I will now write
19:28
inside my container so I will now write
19:28
inside my container so I will now write my code here first of all I need to bind
19:30
my code here first of all I need to bind
19:30
my code here first of all I need to bind my
19:33
model uh that was a your pageable and
19:37
model uh that was a your pageable and
19:37
model uh that was a your pageable and then blob
19:42
item okay okay this is my model uh now next
19:46
okay okay this is my model uh now next
19:46
okay okay this is my model uh now next uh I will make a table for showing all
19:49
uh I will make a table for showing all
19:49
uh I will make a table for showing all the blob storage I'm using uh
19:53
the blob storage I'm using uh
19:53
the blob storage I'm using uh basically bootstrap so I
19:57
basically bootstrap so I
19:57
basically bootstrap so I will put a CLA so that it looks a little
20:01
will put a CLA so that it looks a little
20:01
will put a CLA so that it looks a little bit good so this is my header and inside
20:05
bit good so this is my header and inside
20:05
bit good so this is my header and inside header first of all I have a blob
20:09
header first of all I have a blob
20:09
header first of all I have a blob name
20:11
name and then I will have a different actions
20:15
and then I will have a different actions
20:15
and then I will have a different actions which I can perform on my blob storage
20:18
which I can perform on my blob storage
20:18
which I can perform on my blob storage uh next I will I trate over my
20:24
model and in each iteration I will
20:27
model and in each iteration I will
20:27
model and in each iteration I will create a new row and inside row I have
20:30
create a new row and inside row I have
20:30
create a new row and inside row I have to show
20:36
item dot name so this will basically show the
20:38
name so this will basically show the
20:38
name so this will basically show the name of
20:39
name of my blog files so let's run it and see
20:45
my blog files so let's run it and see
20:45
my blog files so let's run it and see whether it is working okay or
20:50
not okay so my project is
20:54
not okay so my project is
20:54
not okay so my project is building okay let's move to the route
20:59
building okay let's move to the route
20:59
building okay let's move to the route images and here you can see the latest
21:02
images and here you can see the latest
21:02
images and here you can see the latest downloaded images showing here so
21:05
downloaded images showing here so
21:05
downloaded images showing here so currently I'm just showing the names and
21:07
currently I'm just showing the names and
21:07
currently I'm just showing the names and later on I will show you how to preview
21:10
later on I will show you how to preview
21:10
later on I will show you how to preview this file let me upload uh one more file
21:13
this file let me upload uh one more file
21:13
this file let me upload uh one more file so that you guys can have an
21:18
idea okay I have different codes I have
21:21
idea okay I have different codes I have
21:21
idea okay I have different codes I have a code snippet so let's upload
21:25
a code snippet so let's upload
21:25
a code snippet so let's upload it currently it's uploading okay okay
21:28
it currently it's uploading okay okay
21:28
it currently it's uploading okay okay uploaded successfully now if I refresh
21:32
uploaded successfully now if I refresh
21:32
uploaded successfully now if I refresh oh you can see that uh currently I have
21:35
oh you can see that uh currently I have
21:35
oh you can see that uh currently I have two blob items in my
21:39
two blob items in my
21:39
two blob items in my container okay so this is the first
21:42
container okay so this is the first
21:42
container okay so this is the first option uh now next option is I will
21:45
option uh now next option is I will
21:45
option uh now next option is I will create a detail page or I will create a
21:48
create a detail page or I will create a
21:48
create a detail page or I will create a preview page where I will show
21:52
preview page where I will show
21:52
preview page where I will show my blobs uh file so I will be getting uh
21:57
my blobs uh file so I will be getting uh
21:57
my blobs uh file so I will be getting uh blob name
22:01
as an input parameter of my action and
22:04
as an input parameter of my action and
22:04
as an input parameter of my action and inside this I will be
22:13
accessing my blob container so here I will call
22:16
my blob container so here I will call
22:16
my blob container so here I will call get Blob
22:19
client and inside this I need to provide
22:22
client and inside this I need to provide
22:22
client and inside this I need to provide blow blob name so this is basically blob
22:26
blow blob name so this is basically blob
22:26
blow blob name so this is basically blob client
22:28
client then uh I will
22:31
then uh I will call a blob client function which will
22:35
call a blob client function which will
22:35
call a blob client function which will basically generate a
22:39
basically generate a
22:39
basically generate a URL so basically I will be able to
22:42
URL so basically I will be able to
22:42
URL so basically I will be able to access my image using this URL uh this
22:46
access my image using this URL uh this
22:46
access my image using this URL uh this function needs an permission parameter
22:50
function needs an permission parameter
22:50
function needs an permission parameter and where I can set
22:53
and where I can set uh which permission or which things will
22:56
uh which permission or which things will
22:56
uh which permission or which things will be available on this URL so I need to
22:59
be available on this URL so I need to
22:59
be available on this URL so I need to read the file only so I will make it
23:03
read the file only so I will make it
23:03
read the file only so I will make it read
23:07
this currently it's giving me an error
23:11
this currently it's giving me an error
23:11
this currently it's giving me an error so uh basically I also need to provide
23:15
so uh basically I also need to provide
23:15
so uh basically I also need to provide the expiration time as well so this
23:18
the expiration time as well so this
23:18
the expiration time as well so this expiration time basically
23:31
okay this expiration time basically
23:33
okay this expiration time basically
23:33
okay this expiration time basically tells when you want to expire your url
23:37
tells when you want to expire your url
23:37
tells when you want to expire your url so my URL will be generated for one day
23:39
so my URL will be generated for one day
23:39
so my URL will be generated for one day so it means using this generated
23:44
so it means using this generated
23:44
so it means using this generated URL user will be only uh able to access
23:48
URL user will be only uh able to access
23:48
URL user will be only uh able to access the file for one day now let's pause
23:51
the file for one day now let's pause
23:51
the file for one day now let's pause this to view
23:54
this to view bag so that I can read this Inside by
23:57
bag so that I can read this Inside by
23:57
bag so that I can read this Inside by detail section let's create another
24:01
view and inside this view uh
24:06
view and inside this view uh
24:06
view and inside this view uh it's name is
24:11
details okay uh now simply I will create
24:16
details okay uh now simply I will create
24:16
details okay uh now simply I will create an image here and this image will be
24:19
an image here and this image will be
24:19
an image here and this image will be using URL from my viewbag so this is a
24:22
using URL from my viewbag so this is a
24:22
using URL from my viewbag so this is a simple view which will be rendering my
24:24
simple view which will be rendering my
24:24
simple view which will be rendering my image okay uh next option is add a
24:28
image okay uh next option is add a
24:28
image okay uh next option is add a button
24:29
button here an anchor tag and this anchor tag
24:33
here an anchor tag and this anchor tag
24:33
here an anchor tag and this anchor tag basically uh whenever user will click on
24:36
basically uh whenever user will click on
24:36
basically uh whenever user will click on this it will redirect us on Details page
24:39
this it will redirect us on Details page
24:39
this it will redirect us on Details page and Details page will be showing
24:46
us need to provide my parameter here
24:49
us need to provide my parameter here
24:49
us need to provide my parameter here which is a z route blob
24:55
name so here I will provide item
24:59
name so here I will provide item
24:59
name so here I will provide item uh do name okay so this is the now let's
25:04
uh do name okay so this is the now let's
25:04
uh do name okay so this is the now let's run this and see whether it works or
25:16
not okay let's move to images
25:18
to images controller click on
25:20
controller click on preview okay so you can see that uh the
25:23
preview okay so you can see that uh the
25:23
preview okay so you can see that uh the image is showing inside my Details page
25:26
image is showing inside my Details page
25:26
image is showing inside my Details page so this is how you can prev your files
25:29
so this is how you can prev your files
25:29
so this is how you can prev your files or you can access or share your files
25:32
or you can access or share your files
25:32
or you can access or share your files with other users so this is First Option
25:35
with other users so this is First Option
25:35
with other users so this is First Option you can also uh download your
25:39
you can also uh download your
25:39
you can also uh download your file so let's move to that option you
25:42
file so let's move to that option you
25:42
file so let's move to that option you can also uh download your file uh and
25:45
can also uh download your file uh and
25:45
can also uh download your file uh and inside this uh first of all basically
25:48
inside this uh first of all basically
25:48
inside this uh first of all basically you have to uh download the file from a
25:52
you have to uh download the file from a
25:52
you have to uh download the file from a your blob storage account and then you
25:55
your blob storage account and then you
25:55
your blob storage account and then you can pass that to your uh file action
25:57
can pass that to your uh file action
25:57
can pass that to your uh file action which will basically do downloading in
26:00
which will basically do downloading in
26:00
which will basically do downloading in asp.net MVC so let's go to that I will
26:04
asp.net MVC so let's go to that I will
26:04
asp.net MVC so let's go to that I will also create
26:10
another uh function and this function or
26:14
another uh function and this function or
26:14
another uh function and this function or okay so most of the code is
26:17
okay so most of the code is
26:18
okay so most of the code is same as like this so I will be copying
26:21
same as like this so I will be copying
26:21
same as like this so I will be copying this and here I will say
26:24
this and here I will say
26:24
this and here I will say download this section will also get Blob
26:27
download this section will also get Blob
26:27
download this section will also get Blob name and then it will create a blob
26:31
name and then it will create a blob
26:31
name and then it will create a blob client when blob client will be created
26:34
client when blob client will be created
26:34
client when blob client will be created then we will call download option so I
26:37
then we will call download option so I
26:37
then we will call download option so I will remove this code and I will call
26:41
will remove this code and I will call
26:41
will remove this code and I will call download option so there are different
26:44
download option so there are different
26:44
download option so there are different functions available you can download
26:46
functions available you can download
26:46
functions available you can download content you can download uh streaming
26:49
content you can download uh streaming
26:49
content you can download uh streaming and you can download two option so I
26:51
and you can download two option so I
26:51
and you can download two option so I will be using download two option and
26:53
will be using download two option and
26:53
will be using download two option and inside this I need to provide a memory
26:56
inside this I need to provide a memory
26:56
inside this I need to provide a memory stream so I will create a new new stream
27:01
stream so I will create a new new stream
27:01
stream so I will create a new new stream for example I will say uh for Ms is
27:05
for example I will say uh for Ms is
27:05
for example I will say uh for Ms is equal to memory
27:09
stream and now I will pause this memory
27:12
stream and now I will pause this memory
27:12
stream and now I will pause this memory stream to my download function so now
27:16
stream to my download function so now
27:16
stream to my download function so now when I will call my download two
27:18
when I will call my download two
27:18
when I will call my download two function this will download the file and
27:21
function this will download the file and
27:21
function this will download the file and will save it inside my memory stream
27:24
will save it inside my memory stream
27:24
will save it inside my memory stream next I need
27:25
next I need [Applause]
27:27
[Applause] to set my uh stream position to zero so
27:31
to set my uh stream position to zero so
27:31
to set my uh stream position to zero so that uh again I can read data from
27:35
that uh again I can read data from
27:35
that uh again I can read data from my memory stream and here instead of
27:38
my memory stream and here instead of
27:38
my memory stream and here instead of returning view I will be basically
27:41
returning view I will be basically
27:41
returning view I will be basically returning a memory
27:44
returning a memory stream here I need to uh provide content
27:48
stream here I need to uh provide content
27:48
stream here I need to uh provide content type and then the basically the content
27:52
type and then the basically the content
27:52
type and then the basically the content type I can say is application slent
27:55
type I can say is application slent
27:55
type I can say is application slent stream
27:58
stream and then here I need to provide the file
28:02
and then here I need to provide the file
28:02
and then here I need to provide the file name so I need to provide the file name
28:05
name so I need to provide the file name
28:05
name so I need to provide the file name when file will be downloaded so this
28:07
when file will be downloaded so this
28:07
when file will be downloaded so this name will be used uh by default so I can
28:10
name will be used uh by default so I can
28:10
name will be used uh by default so I can say it uh blob name as
28:14
say it uh blob name as
28:14
say it uh blob name as well so now I need to add a new button
28:18
well so now I need to add a new button
28:18
well so now I need to add a new button for download inside my action so let's
28:22
for download inside my action so let's
28:22
for download inside my action so let's copy the same one just change the name
28:25
copy the same one just change the name
28:25
copy the same one just change the name for this download and here I I will say
28:29
for this download and here I I will say
28:29
for this download and here I I will say download so let's run the code and see
28:33
download so let's run the code and see
28:33
download so let's run the code and see how it look
28:40
lies now if I move to images
28:46
coner and click on download
28:50
coner and click on download
28:50
coner and click on download button okay close stream uh basically
28:54
button okay close stream uh basically
28:54
button okay close stream uh basically the issue is that I have used the using
28:57
the issue is that I have used the using
28:57
the issue is that I have used the using parameter
28:59
parameter and that's way I am unable to access my
29:02
and that's way I am unable to access my
29:02
and that's way I am unable to access my memory stream because it is uh disposed
29:06
memory stream because it is uh disposed
29:06
memory stream because it is uh disposed bynet before it is accessible inside uh
29:10
bynet before it is accessible inside uh
29:10
bynet before it is accessible inside uh this file option so let's
29:13
this file option so let's
29:13
this file option so let's remove using option and see how it look
29:16
remove using option and see how it look
29:16
remove using option and see how it look lies I hope it should work
29:20
lies I hope it should work
29:20
lies I hope it should work now now go to
29:26
images download so you can see that my file
29:30
download so you can see that my file
29:30
download so you can see that my file have been downloaded and if I open the
29:33
have been downloaded and if I open the
29:33
have been downloaded and if I open the file it is showing
29:36
file it is showing properly so this is how you can download
29:39
properly so this is how you can download
29:39
properly so this is how you can download your files as well in asp.net cor MVC
29:43
your files as well in asp.net cor MVC
29:43
your files as well in asp.net cor MVC using blob
29:46
storage so the next option is uh
29:51
storage so the next option is uh
29:51
storage so the next option is uh providing an upload option so I will
29:55
providing an upload option so I will
29:55
providing an upload option so I will create or I will rename my create to
29:58
create or I will rename my create to
29:58
create or I will rename my create to upload so that I can upload a a new file
30:03
upload so that I can upload a a new file
30:03
upload so that I can upload a a new file using my application into blob storage
30:06
using my application into blob storage
30:06
using my application into blob storage account so I will change it to
30:08
account so I will change it to
30:09
account so I will change it to upload also prename this
30:12
upload also prename this
30:12
upload also prename this comment okay uh let's remove this extra
30:16
comment okay uh let's remove this extra
30:16
comment okay uh let's remove this extra option of the
30:22
edit okay for uploading in asp.net MVC first of all uh
30:26
uploading in asp.net MVC first of all uh
30:26
uploading in asp.net MVC first of all uh I have to create uh
30:29
I have to create uh a post option and this post option will
30:32
a post option and this post option will
30:32
a post option and this post option will be getting I form
30:34
be getting I form file and I will I form file name will be
30:39
file and I will I form file name will be
30:39
file and I will I form file name will be file so this is the input parameter that
30:42
file so this is the input parameter that
30:42
file so this is the input parameter that I will be using for getting the file
30:46
I will be using for getting the file
30:46
I will be using for getting the file data from form and now here I will call
30:52
data from form and now here I will call
30:52
data from form and now here I will call container client. upload blob
30:56
container client. upload blob
30:56
container client. upload blob option inside upload blob option I need
30:59
option inside upload blob option I need
30:59
option inside upload blob option I need to provide two things first of all I
31:02
to provide two things first of all I
31:02
to provide two things first of all I need to provide blob name blob name will
31:07
need to provide blob name blob name will
31:07
need to provide blob name blob name will be basically the file name and using
31:09
be basically the file name and using
31:09
be basically the file name and using this I will be able to access this file
31:11
this I will be able to access this file
31:11
this I will be able to access this file then we have uh content inside content
31:14
then we have uh content inside content
31:14
then we have uh content inside content we can provide a stream or we can
31:16
we can provide a stream or we can
31:16
we can provide a stream or we can provide binary data so I will be
31:18
provide binary data so I will be
31:18
provide binary data so I will be providing a stream here first of all I
31:20
providing a stream here first of all I
31:20
providing a stream here first of all I need to provide the file
31:24
need to provide the file
31:24
need to provide the file name so here it is file name and so I'll
31:28
name so here it is file name and so I'll
31:28
name so here it is file name and so I'll basically using file name as a blob name
31:31
basically using file name as a blob name
31:31
basically using file name as a blob name uh then I need to get the
31:35
uh then I need to get the
31:35
uh then I need to get the stream so I will call open read stream
31:38
stream so I will call open read stream
31:38
stream so I will call open read stream so this will provide a stream to the
31:40
so this will provide a stream to the
31:40
so this will provide a stream to the upload blob function and upload blob
31:43
upload blob function and upload blob
31:43
upload blob function and upload blob function will save it to the aure blob
31:46
function will save it to the aure blob
31:46
function will save it to the aure blob storage account what a condition here
31:49
storage account what a condition here
31:49
storage account what a condition here basically
31:51
basically sometimes user uh call or upload the
31:55
sometimes user uh call or upload the
31:55
sometimes user uh call or upload the folder or upload the form uh without
31:59
folder or upload the form uh without
31:59
folder or upload the form uh without adding the file that's why we also have
32:04
to provide a condition here
32:11
and so if my file sorry if my file is
32:17
and so if my file sorry if my file is
32:17
and so if my file sorry if my file is null
32:19
null or the length is zero so it means file
32:23
or the length is zero so it means file
32:23
or the length is zero so it means file is not uploaded or uh properly then I
32:26
is not uploaded or uh properly then I
32:26
is not uploaded or uh properly then I will return from here and I will say bad
32:30
will return from here and I will say bad
32:30
will return from here and I will say bad request okay and if everything is okay
32:34
request okay and if everything is okay
32:34
request okay and if everything is okay upload that blog to this and after that
32:37
upload that blog to this and after that
32:37
upload that blog to this and after that redirect the user to the index page so
32:40
redirect the user to the index page so
32:40
redirect the user to the index page so that he can see the newly uploaded
32:43
that he can see the newly uploaded
32:43
that he can see the newly uploaded file okay now uh the next option
32:47
file okay now uh the next option
32:47
file okay now uh the next option is create a new view for this upload
32:54
action and inside this view I will
32:57
action and inside this view I will
32:57
action and inside this view I will create create a
32:59
create create a form this form basically will be using
33:02
form this form basically will be using
33:02
form this form basically will be using for uploading files I uh need an input
33:06
for uploading files I uh need an input
33:06
for uploading files I uh need an input and this input type will be
33:09
and this input type will be
33:09
and this input type will be file give a name here so that we can map
33:13
file give a name here so that we can map
33:13
file give a name here so that we can map it the name is
33:15
it the name is file and you can also provide form
33:18
file and you can also provide form
33:19
file and you can also provide form control class
33:22
here I also need to put a button here
33:27
here I also need to put a button here
33:27
here I also need to put a button here and this button type will be
33:30
and this button type will be
33:30
and this button type will be submit and you can say here
33:35
submit and you can say here
33:35
submit and you can say here save now I also need to provide the
33:39
save now I also need to provide the
33:39
save now I also need to provide the action uh on which I want to submit this
33:42
action uh on which I want to submit this
33:42
action uh on which I want to submit this form and this action name is upload I
33:46
form and this action name is upload I
33:46
form and this action name is upload I also need to provide ink type ink type
33:48
also need to provide ink type ink type
33:48
also need to provide ink type ink type is basically whenever you want to upload
33:51
is basically whenever you want to upload
33:51
is basically whenever you want to upload different type of data instead of plane
33:54
different type of data instead of plane
33:54
different type of data instead of plane data or form data you want to upload
33:56
data or form data you want to upload
33:56
data or form data you want to upload files then you have to make this option
33:59
files then you have to make this option
33:59
files then you have to make this option as a multi-art form data then uh
34:02
as a multi-art form data then uh
34:02
as a multi-art form data then uh different data or files will be uploaded
34:05
different data or files will be uploaded
34:05
different data or files will be uploaded to uh your MVC
34:07
to uh your MVC action okay so this is our form and this
34:11
action okay so this is our form and this
34:12
action okay so this is our form and this is our controller now uh let's click on
34:16
is our controller now uh let's click on
34:16
is our controller now uh let's click on run button and see how it look likees
34:29
let's close the extra tabs okay now I'm
34:33
let's close the extra tabs okay now I'm
34:33
let's close the extra tabs okay now I'm going to uh
34:36
going to uh images here currently I have two images
34:40
images here currently I have two images
34:40
images here currently I have two images and now let's call upload action so this
34:43
and now let's call upload action so this
34:43
and now let's call upload action so this is the option and in first one I have to
34:47
is the option and in first one I have to
34:47
is the option and in first one I have to uh provide any image for example I have
34:50
uh provide any image for example I have
34:50
uh provide any image for example I have an image of my show that I need to
34:52
an image of my show that I need to
34:52
an image of my show that I need to upload and then click on save button so
34:55
upload and then click on save button so
34:55
upload and then click on save button so when I will click on save button this
34:57
when I will click on save button this
34:57
when I will click on save button this will hit my upload action and inside
35:00
will hit my upload action and inside
35:00
will hit my upload action and inside this upload action you can see my file
35:03
this upload action you can see my file
35:03
this upload action you can see my file this is the content type of my
35:06
this is the content type of my
35:06
this is the content type of my file and then I have file name uh also
35:10
file and then I have file name uh also
35:10
file and then I have file name uh also have the description of the file and
35:12
have the description of the file and
35:12
have the description of the file and then a stream of the file so
35:16
then a stream of the file so
35:16
then a stream of the file so let's go to next step and upload the
35:20
let's go to next step and upload the
35:20
let's go to next step and upload the file okay my file uploaded successfully
35:23
file okay my file uploaded successfully
35:23
file okay my file uploaded successfully and if I
35:24
and if I continue and I can see my newly up
35:27
continue and I can see my newly up
35:27
continue and I can see my newly up loaded file inside this lift if I see
35:30
loaded file inside this lift if I see
35:30
loaded file inside this lift if I see this inside uh solution Explorer as your
35:33
this inside uh solution Explorer as your
35:33
this inside uh solution Explorer as your storage
35:35
storage Explorer and let's click on refresh you
35:38
Explorer and let's click on refresh you
35:38
Explorer and let's click on refresh you can see newly uploaded file is showing
35:41
can see newly uploaded file is showing
35:41
can see newly uploaded file is showing here if I click on preview button you
35:44
here if I click on preview button you
35:44
here if I click on preview button you can see image is showing here and if I
35:48
can see image is showing here and if I
35:48
can see image is showing here and if I see it using my preview option it is
35:51
see it using my preview option it is
35:51
see it using my preview option it is also showing here if I download
35:54
also showing here if I download
35:54
also showing here if I download it
35:58
and here it is showing uh so this is how you can upload
36:01
showing uh so this is how you can upload
36:01
showing uh so this is how you can upload your uh file to blob
36:04
your uh file to blob
36:04
your uh file to blob storage uh the other option the next
36:08
storage uh the other option the next
36:08
storage uh the other option the next option which we will Implement is uh
36:10
option which we will Implement is uh
36:10
option which we will Implement is uh Delete
36:13
option and this delete option basically
36:17
option and this delete option basically
36:17
option and this delete option basically will be deleting my blob file from
36:20
will be deleting my blob file from
36:20
will be deleting my blob file from Storage account so let's change it uh
36:25
Storage account so let's change it uh
36:25
Storage account so let's change it uh with a string
36:28
with a string basically I will be getting blob name
36:30
basically I will be getting blob name
36:30
basically I will be getting blob name here I no need to get a form collection
36:34
here I no need to get a form collection
36:34
here I no need to get a form collection here and I'm changing it to http
36:38
here and I'm changing it to http
36:38
here and I'm changing it to http get uh basically it's not good approach
36:42
get uh basically it's not good approach
36:42
get uh basically it's not good approach but still I'm changing it to http get so
36:44
but still I'm changing it to http get so
36:44
but still I'm changing it to http get so that instead of creating a new separate
36:47
that instead of creating a new separate
36:47
that instead of creating a new separate view I can directly call delete action
36:50
view I can directly call delete action
36:50
view I can directly call delete action and the file will be
36:52
and the file will be
36:52
and the file will be deleted okay now inside this uh first of
36:56
deleted okay now inside this uh first of
36:56
deleted okay now inside this uh first of all I need to create blob
36:59
all I need to create blob
36:59
all I need to create blob client so I will call it container
37:02
client so I will call it container
37:02
client so I will call it container client. get Blob client and inside blob
37:05
client. get Blob client and inside blob
37:05
client. get Blob client and inside blob client I need to provide blob
37:09
name if uh blob client is get
37:13
name if uh blob client is get
37:13
name if uh blob client is get successfully then I need to call the
37:15
successfully then I need to call the
37:15
successfully then I need to call the delete function lob client.
37:19
delete function lob client.
37:19
delete function lob client. delete if exist uh basically I'm using
37:22
delete if exist uh basically I'm using
37:22
delete if exist uh basically I'm using this so that if uh file does not exist
37:25
this so that if uh file does not exist
37:25
this so that if uh file does not exist or file already have been deleted no uh
37:28
or file already have been deleted no uh
37:28
or file already have been deleted no uh error comes to us so this is how easily
37:32
error comes to us so this is how easily
37:32
error comes to us so this is how easily you can delete your file from aure blog
37:39
storage okay uh now let's
37:42
okay uh now let's [Music]
37:44
[Music] move to the index page and on index page
37:48
move to the index page and on index page
37:48
move to the index page and on index page I need to put a new
37:51
I need to put a new action this
37:55
action this AC basically will be delete
37:58
AC basically will be delete
37:58
AC basically will be delete and the parameter name is blob name as
38:01
and the parameter name is blob name as
38:01
and the parameter name is blob name as this is an HTTP get request so I have to
38:04
this is an HTTP get request so I have to
38:04
this is an HTTP get request so I have to provide the name here so also provide
38:08
provide the name here so also provide
38:08
provide the name here so also provide the name here name make it
38:13
the name here name make it
38:13
the name here name make it delete
38:16
okay let's run it and see how it look
38:20
okay let's run it and see how it look
38:20
okay let's run it and see how it look like
38:33
if I uh go to images so these are currently available
38:36
images so these are currently available
38:36
images so these are currently available images uh let's click on one of the file
38:39
images uh let's click on one of the file
38:39
images uh let's click on one of the file for example I want to delete this
38:42
for example I want to delete this
38:42
for example I want to delete this file let's delete it oh currently it's
38:46
file let's delete it oh currently it's
38:46
file let's delete it oh currently it's giving me an
38:49
giving me an error okay so error is basically
38:54
error okay so error is basically
38:54
error okay so error is basically 400 basically it it is a bad request
38:58
400 basically it it is a bad request
38:58
400 basically it it is a bad request let's try to delete another one maybe
39:01
let's try to delete another one maybe
39:01
let's try to delete another one maybe the parameter name is having conflict
39:03
the parameter name is having conflict
39:03
the parameter name is having conflict okay that is fine so let's go to the
39:06
okay that is fine so let's go to the
39:06
okay that is fine so let's go to the code and see what's wrong why uh my
39:09
code and see what's wrong why uh my
39:09
code and see what's wrong why uh my action is not hitting so this one is
39:11
action is not hitting so this one is
39:11
action is not hitting so this one is fine the parameter name is fine if I go
39:14
fine the parameter name is fine if I go
39:14
fine the parameter name is fine if I go to
39:15
to images and click on or put a break point
39:19
images and click on or put a break point
39:19
images and click on or put a break point here oh okay so basically uh this was an
39:24
here oh okay so basically uh this was an
39:24
here oh okay so basically uh this was an HTTP post action before and validate
39:27
HTTP post action before and validate
39:27
HTTP post action before and validate anti forgery token was applied here
39:29
anti forgery token was applied here
39:29
anti forgery token was applied here that's why uh I was having an error So
39:32
that's why uh I was having an error So
39:32
that's why uh I was having an error So currently let's remove this I don't need
39:36
currently let's remove this I don't need
39:36
currently let's remove this I don't need this so let's run it again and see how
39:39
this so let's run it again and see how
39:39
this so let's run it again and see how it
39:47
works okay let's refresh this now if I click
39:52
okay let's refresh this now if I click
39:52
okay let's refresh this now if I click on delete button so now it's working
39:55
on delete button so now it's working
39:55
on delete button so now it's working fine if I check the blob name so this is
39:57
fine if I check the blob name so this is
39:57
fine if I check the blob name so this is the exactly blob name which is stored my
40:00
the exactly blob name which is stored my
40:00
the exactly blob name which is stored my inside my container Let's uh get the
40:04
inside my container Let's uh get the
40:04
inside my container Let's uh get the blob client and then delete that file if
40:07
blob client and then delete that file if
40:07
blob client and then delete that file if that exist and if I continue
40:10
that exist and if I continue
40:10
that exist and if I continue this so here you can see that the file
40:14
this so here you can see that the file
40:14
this so here you can see that the file have been uh deleted successfully so
40:16
have been uh deleted successfully so
40:16
have been uh deleted successfully so let's go to as your uh storage Explorer
40:20
let's go to as your uh storage Explorer
40:20
let's go to as your uh storage Explorer and refresh so you can see that uh the
40:24
and refresh so you can see that uh the
40:24
and refresh so you can see that uh the image have been uh deleted success
40:28
image have been uh deleted success
40:28
image have been uh deleted success sucessfully so this is how you can
40:31
sucessfully so this is how you can
40:31
sucessfully so this is how you can perform uh different uh operations for
40:35
perform uh different uh operations for
40:35
perform uh different uh operations for example getting blobs getting list of
40:38
example getting blobs getting list of
40:38
example getting blobs getting list of blobs uploading blob and then deleting
40:41
blobs uploading blob and then deleting
40:41
blobs uploading blob and then deleting blob using asp.net
40:44
blob using asp.net MVC there are uh few other options
40:48
MVC there are uh few other options
40:48
MVC there are uh few other options available uh which I don't show you for
40:51
available uh which I don't show you for
40:51
available uh which I don't show you for example you want to create a new
40:53
example you want to create a new
40:53
example you want to create a new container using uh your cop code ly I
40:58
container using uh your cop code ly I
40:58
container using uh your cop code ly I have these four containers inside my
41:01
have these four containers inside my
41:01
have these four containers inside my blob account so now I want to create
41:04
blob account so now I want to create
41:04
blob account so now I want to create another container and I will show you
41:07
another container and I will show you
41:07
another container and I will show you how you can manage this
41:10
how you can manage this
41:10
how you can manage this programmatically
41:12
programmatically so here you have uh got your container
41:15
so here you have uh got your container
41:15
so here you have uh got your container the next option you need to call is
41:18
the next option you need to call is
41:18
the next option you need to call is container client and create if not
41:22
container client and create if not
41:22
container client and create if not exist
41:25
so basic Bally whenever you create a
41:29
so basic Bally whenever you create a
41:29
so basic Bally whenever you create a blob container client and if that
41:32
blob container client and if that
41:32
blob container client and if that container not exist then this will give
41:34
container not exist then this will give
41:34
container not exist then this will give you an error but if you call this create
41:36
you an error but if you call this create
41:37
you an error but if you call this create if not exist this will create a
41:39
if not exist this will create a
41:39
if not exist this will create a container for you if uh one container
41:41
container for you if uh one container
41:41
container for you if uh one container not exist so let's change the images to
41:45
not exist so let's change the images to
41:45
not exist so let's change the images to for example I want to say my images
41:49
for example I want to say my images
41:49
for example I want to say my images profile uh let's run this to see
42:03
images okay currently uh no blob
42:07
images okay currently uh no blob
42:07
images okay currently uh no blob available let's see whether a new
42:09
available let's see whether a new
42:10
available let's see whether a new account have a new container have been
42:11
account have a new container have been
42:12
account have a new container have been created or not refresh it and you can
42:14
created or not refresh it and you can
42:14
created or not refresh it and you can see that a new container have been
42:16
see that a new container have been
42:16
see that a new container have been uploaded but currently there is no file
42:19
uploaded but currently there is no file
42:19
uploaded but currently there is no file and this is my old
42:21
and this is my old container now uh let's upload one file
42:25
container now uh let's upload one file
42:25
container now uh let's upload one file and see whether this is is working fine
42:28
and see whether this is is working fine
42:28
and see whether this is is working fine or
42:30
not okay let's upload this save
42:34
not okay let's upload this save
42:34
not okay let's upload this save it and let's upload another file sorry
42:38
it and let's upload another file sorry
42:38
it and let's upload another file sorry for not having upload
42:41
for not having upload
42:41
for not having upload button and I will say this file save it
42:46
button and I will say this file save it
42:46
button and I will say this file save it then upload another
42:52
file okay this go of the Densel
42:57
file okay this go of the Densel
42:57
file okay this go of the Densel Washington so here you can see all
42:59
Washington so here you can see all
42:59
Washington so here you can see all operations are working
43:02
operations are working
43:02
operations are working smoothly no issue is coming and you can
43:06
smoothly no issue is coming and you can
43:06
smoothly no issue is coming and you can see how it is easy to change the
43:08
see how it is easy to change the
43:08
see how it is easy to change the container so now you can see file
43:11
container so now you can see file
43:11
container so now you can see file deleted if I see this container and you
43:16
deleted if I see this container and you
43:16
deleted if I see this container and you can
43:19
see my file uploaded so there is one other thing uh
43:23
uploaded so there is one other thing uh
43:23
uploaded so there is one other thing uh that I talk
43:25
that I talk about that was
43:27
about that was basically blob type so if you upload any
43:31
basically blob type so if you upload any
43:31
basically blob type so if you upload any file using uh Microsoft as your storage
43:34
file using uh Microsoft as your storage
43:34
file using uh Microsoft as your storage Explorer it show you different options
43:37
Explorer it show you different options
43:37
Explorer it show you different options it show you uh block blob basically this
43:40
it show you uh block blob basically this
43:40
it show you uh block blob basically this one is best for saving images or videos
43:43
one is best for saving images or videos
43:43
one is best for saving images or videos then page blob and upend blob so these
43:46
then page blob and upend blob so these
43:47
then page blob and upend blob so these are different options so in our code we
43:49
are different options so in our code we
43:49
are different options so in our code we were basically using block blog and then
43:52
were basically using block blog and then
43:52
were basically using block blog and then you can uh Target the different access
43:55
you can uh Target the different access
43:55
you can uh Target the different access tiers and here you can see
43:58
tiers and here you can see
43:58
tiers and here you can see we have hot cool cold and archive so the
44:02
we have hot cool cold and archive so the
44:02
we have hot cool cold and archive so the first one is most expensive for storing
44:05
first one is most expensive for storing
44:05
first one is most expensive for storing data on Azure and the last one is uh
44:09
data on Azure and the last one is uh
44:09
data on Azure and the last one is uh most cheaper on Azure storage account so
44:13
most cheaper on Azure storage account so
44:13
most cheaper on Azure storage account so now it depends on uh whether what is the
44:17
now it depends on uh whether what is the
44:17
now it depends on uh whether what is the requirement of your system how many
44:20
requirement of your system how many
44:20
requirement of your system how many times your data is being accessible by
44:23
times your data is being accessible by
44:23
times your data is being accessible by users so using that you can uh select
44:27
users so using that you can uh select
44:27
users so using that you can uh select this option for example let's see with
44:30
this option for example let's see with
44:30
this option for example let's see with gold and upload a
44:34
file upload this code
44:39
file currently file is
44:42
file currently file is
44:42
file currently file is uploading so now if you see uh first
44:46
uploading so now if you see uh first
44:46
uploading so now if you see uh first file was uploaded using H here and the
44:50
file was uploaded using H here and the
44:50
file was uploaded using H here and the new file is using cold tier so like this
44:53
new file is using cold tier so like this
44:53
new file is using cold tier so like this you can also uh handle your access tier
44:57
you can also uh handle your access tier
44:57
you can also uh handle your access tier you can also handle this
44:59
you can also handle this
44:59
you can also handle this programmatically uh and according to
45:01
programmatically uh and according to
45:01
programmatically uh and according to your requirement you can use different
45:03
your requirement you can use different
45:03
your requirement you can use different access tier uh to reduce your cost of
45:07
access tier uh to reduce your cost of
45:07
access tier uh to reduce your cost of aure blob storage so I think so this is
45:10
aure blob storage so I think so this is
45:10
aure blob storage so I think so this is the best option that you can use uh then
45:12
the best option that you can use uh then
45:12
the best option that you can use uh then we have different metadata properties
45:15
we have different metadata properties
45:15
we have different metadata properties for your Azure blob for example you can
45:18
for your Azure blob for example you can
45:18
for your Azure blob for example you can access the Lost modified date you can
45:22
access the Lost modified date you can
45:22
access the Lost modified date you can access the content type of The Blob that
45:25
access the content type of The Blob that
45:25
access the content type of The Blob that you uploaded and whether this is active
45:28
you uploaded and whether this is active
45:28
you uploaded and whether this is active or not you can also uh have a verion of
45:32
or not you can also uh have a verion of
45:32
or not you can also uh have a verion of your file for example you are uploading
45:34
your file for example you are uploading
45:34
your file for example you are uploading the same file uh then aure will
45:36
the same file uh then aure will
45:36
the same file uh then aure will automatically create a varion for your
45:39
automatically create a varion for your
45:39
automatically create a varion for your file you can have uh lease date you can
45:42
file you can have uh lease date you can
45:42
file you can have uh lease date you can have remaining days so you can also add
45:45
have remaining days so you can also add
45:45
have remaining days so you can also add policies for your file where you can
45:49
policies for your file where you can
45:49
policies for your file where you can Define how many days this file should
45:52
Define how many days this file should
45:52
Define how many days this file should reside on as your blob storage account
45:55
reside on as your blob storage account
45:55
reside on as your blob storage account so these are a lot of options available
45:57
so these are a lot of options available
45:58
so these are a lot of options available and you can explore them on Microsoft
46:01
and you can explore them on Microsoft
46:02
and you can explore them on Microsoft website so uh this was our code uh let's
46:06
website so uh this was our code uh let's
46:06
website so uh this was our code uh let's push this
46:09
code to as your blob storage account so
46:12
code to as your blob storage account so
46:12
code to as your blob storage account so I will say uh this
46:16
I will say uh this performing upload delete and list
46:22
performing upload delete and list
46:22
performing upload delete and list operations
46:23
operations on blob storage okay
46:27
on blob storage okay
46:27
on blob storage okay uh let's push this code so that you guys
46:29
uh let's push this code so that you guys
46:29
uh let's push this code so that you guys can access
46:32
can access it okay code
46:35
it okay code pushed successfully oh still pushing
46:39
pushed successfully oh still pushing
46:39
pushed successfully oh still pushing okay that's it uh now if I show you the
46:43
okay that's it uh now if I show you the
46:43
okay that's it uh now if I show you the repository let's refresh
46:47
it and the latest episode is episode
46:51
it and the latest episode is episode
46:52
it and the latest episode is episode three so here if you are interested to
46:55
three so here if you are interested to
46:55
three so here if you are interested to explore this code or you want to perform
46:58
explore this code or you want to perform
46:58
explore this code or you want to perform uh or you want to play with this code
47:00
uh or you want to play with this code
47:00
uh or you want to play with this code you can access this rappo and you can
47:03
you can access this rappo and you can
47:03
you can access this rappo and you can clone this code and you can use this for
47:06
clone this code and you can use this for
47:06
clone this code and you can use this for your learning purpose and don't uh uh
47:11
your learning purpose and don't uh uh
47:11
your learning purpose and don't uh uh don't forget to give me a store if you
47:13
don't forget to give me a store if you
47:13
don't forget to give me a store if you like my repo and also share with others
47:17
like my repo and also share with others
47:17
like my repo and also share with others if they want to learn uh this as
47:21
if they want to learn uh this as
47:21
if they want to learn uh this as well and let's move to the slides
47:28
well and let's move to the slides
47:28
well and let's move to the slides so now if I see uh media and content
47:32
so now if I see uh media and content
47:32
so now if I see uh media and content storage so basically I was uh working
47:36
storage so basically I was uh working
47:36
storage so basically I was uh working with this type of real world use case so
47:39
with this type of real world use case so
47:39
with this type of real world use case so you can use any of
47:41
you can use any of them so that's was it from my side if
47:45
them so that's was it from my side if
47:46
them so that's was it from my side if you are interested to learn more about
47:48
you are interested to learn more about
47:48
you are interested to learn more about and please uh please register with our
47:53
and please uh please register with our
47:53
and please uh please register with our Islamabad
47:55
Islamabad chapter so basically inside Islam watch
47:58
chapter so basically inside Islam watch
47:58
chapter so basically inside Islam watch chapter currently we are hosting this uh
48:01
chapter currently we are hosting this uh
48:01
chapter currently we are hosting this uh as your show so you can subscribe and
48:05
as your show so you can subscribe and
48:05
as your show so you can subscribe and you can see the latest coming
48:14
shows oh this is uh and thank you uh for being the part
48:17
uh and thank you uh for being the part
48:17
uh and thank you uh for being the part of cop Corner Islamabad chapter uh and I
48:21
of cop Corner Islamabad chapter uh and I
48:21
of cop Corner Islamabad chapter uh and I hope see you in the next show next
48:24
hope see you in the next show next
48:24
hope see you in the next show next Saturday have a good day
48:28
Saturday have a good day
48:28
Saturday have a good day [Music]