Upload file to server hosting by PHP. Encode file to Base 64 extension

Thanks @TIMAI2

- Download a video file to the ASD, convert it to a Base 64 string, and then convert the string to a new video file.

p327_extensionbase64_bajarvideo.aia (22.4 KB)

  • On this website we can see samples of video files:
    https://filesamples.com/formats/mp4

  • Let's download the file: sample_960x400_ocean_with_audio.mp4 (16,7 MB)

  • We are going to follow this process:

1.- We download the video file to the ASD.
2.- We obtain the absolute address and put it in the source of the VideoPlayer.
3.- Start VideoPlayer.
4.- Convert file to string Base 64.
5.- Show first 100 chars.
6. Convert string Base 64 to file sample_mirror.mp4
7.- Start VideoPlayer with sample_mirror.mp4

Hello Juan,
I meet a problem to get the good path to find the file.
The code under used to work previously but it seems that with the ASD the path changed.
Can you please advise me.
Thanks.

Try with App Inventor.
Does the example in the previous post work for you?
What version of Android are you using?

I am using Android 11. Your exemple works.

I am just trying to encode a file in the DCIM folder (image taken with my camera).

I don't succed to have the good path.

Are you using App Inventor ? (or Kodular). I ask because Kodular appears (to me) to handle the file paths in Android 11 differently.

I am using Kodular

FileToStringASD has as base directory: /storage/emulated/0/Android/data/'namepackage'/files

FileToString block, base directory is:
/mnt/sdcard

Try FileToString with fileName:
/DCIM/Camera/yourvideo.mp4

@TIMAI2
Is it possible to copy, with known extensions, a file from DCIM to ASD in Android 11?

I don't have an immediate answer, I would have to build something and test. I may not be the best person to ask, but I know who is...@Anke :smiley:

The DCIM folder should be readable from an app on Android 11....

I asked about Kodular because when using Kodular creator, the image picker doesn't behave in the same way as the one on App Inventor (which, in my experience, creates a copy of the image selected in the ASD, whilst Kodular does not)

Yes, even when AI2 / Kodular targets Android 11 (targetSdkVersion = 30 → August 2021).
(Of course you need READ permission for this.)

Yes, because you do not need WRITE permission to write / copy to ASD.

Note: WRITE_EXTERNAL_STORAGE permission is no longer available for targetSdkVersion = 30 (Aug 2021), so you cannot save / copy to the external storage (except for the ASD). READ_EXTERNAL_STORAGE permission behaves the same way under Android 11 / (targetSdkVersion = 30) as before.

@Anke, does the example in post 19 work for you?
I have added the READ permission.
I have updated it here:
p327C_PICK_ASD_AI2.aia (22.4 KB)

It's about the following:

  • PICK an image from DCIM. Convert Uri to Path.
  • Copy that image to ASD with name: /image_in_ASD.png
  • Convert image ASD to string Base 64.
  • Upload string to webserver with PHP by Web component.
  • Show image in a web page in my hosting.
1 Like

Hi Juan, that last one works just fine for me (finally :wink: ), both companion and compiled on Android 11 (Google Pixel 4a)

1 Like

LGTM, seems to work on Android 9 and 11 (Companion).
Android 11 with APK: OK
:+1:

1 Like

Thanks @TIMAI2 and @Anke, before it didn't work for me because I didn't have READ permission.

It works perfectly, thank you !

can we get the url of uploading file

That depends on the PHP code, for example in this code the file upload to the same directory where the PHP code is and it always has the name "dibujo.png"

$ifp = fopen( "dibujo.png", "wb" );

hi juan. i have a problem. i saved my blob picture to the server with the same block and php as being told above. but the blob size are pretty low which unable me to display the image. can someone help me the matter?

image
image
image

@Nurshazlin_Natasha

It looks like you are using Kodular, please test the code in App Inventor.

hi juan, i have try in app inventor. it still same

image

size of the blob are pretty low