Convert binary text into file

i’m using base64 to encode/decode attachments. the encode64 worked fine but the decode returns a binary text and I’m having trouble converting it back to the original attachment.

Base.decode64!() response:
<<137, 80, 78, 71, 13, 10, 26, 10, 0, 0, ...>>

can anyone help?

File - write/3 can write a binary to a file

pathOnClient = “test.png”
version: = the pathOnClient file encoded in base 64

then, I have to decode that file as show it the same way as it was uploaded, like the “pathOnClient” shows. I’ve done tests with File.write() but it returns :ok only.

If it returns :ok, then the file write was a success. What’s the problem?

because I want the return to be what’s on the “pathOnClient” when the upload was made. so I want it to be “test.png”. Is that possible?

The first argument of File.write/3 is where you choose the output file path. It can be anything you want it to be.

1 Like

Can you give your use-case in more details?

Sounds like you’re trying to get the contents of the Content-Disposition HTTP header. You got no problems with File.write itself; that one looks to work fine for you.

I want to download the decoded file, I’m not being able to do that with File.write()

the file.write returns :ok and I can see the file open inside my project. but it needs to be available to download when someone calls the endpoint.

File.write/3 is not a pure function. It returns :ok but if you look on the filesystem, you will see the file has been created as a side-effect. Then it is up to you how you serve that file to your users - that is an entirely separate issue.

Well there’s your problem. File.write does not do downloads. It writes bytes to a filesystem.

It looks like you’re trying to to serve files to the users of your project. Take a look at waffle and waffle_ecto as a start.