sTr8_Struggin
sTr8_Struggin

Reputation: 675

curl: (26) couldn't open file when the file is a variable

I am trying to upload a list of files to a server. This is the script that I have

files=$(shopt -s nullglob dotglob; echo /media/USB/*) > /dev/null 2>&1
if (( ${#files}  ))
    then
            for file in $files
            do
                    echo "Filename"
                    echo $file
                    curl -i -X POST -F files=@$file 192.168.1.122:5000/upload
            done

Basically I am trying to take all of the files on a USB drive and upload them to my local server. The curl command is giving me trouble. I can move these files to drives that I mount on this system but I haven't been able to send them with the curl command. I have tried variations on @"$file" and @\"$file\" based on other related questions but I haven't been able to get this to work. However what is annoying is that when I do this:

curl -i -X POST -F files=@/absolute/path/to/my/file.txt 192.168.1.122:5000/upload

It works as I expect. How can I get this to work in my loop?

Upvotes: 5

Views: 17778

Answers (1)

sTr8_Struggin
sTr8_Struggin

Reputation: 675

So I ended up figuring out a solution that I will share in case anyone else is having this problem. I am not sure exactly why this fixed it but I simply had to put quotes around the files=@$file in the curl command:

curl -i -X POST -F "files=@$file" 192.168.1.122:5000/upload

Leaving this here in case it is useful to someone down the line.

Upvotes: 6

Related Questions