Post request with Wget?

前端 未结 1 621
终归单人心
终归单人心 2020-12-04 13:50

I want to use wget to upload a picture to a distant server, using an authentication token, \'AUTH_1624582364932749DFHDD\', to the \'test\' folder.

This command doesn

相关标签:
1条回答
  • 2020-12-04 14:27

    Wget currently only supports x-www-form-urlencoded data. --post-file is not for transmitting files as form attachments, it expects data with the form: key=value&otherkey=example.

    --post-data and --post-file work the same way: the only difference is that --post-data allows you to specify the data in the command line, while --post-file allows you to specify the path of the file that contain the data to send.

    Here's the documentation:

     --post-data=string
           --post-file=file
               Use POST as the method for all HTTP requests and send the specified data
               in the request body.  --post-data sends string as data, whereas
               --post-file sends the contents of file.  Other than that, they work in
               exactly the same way. In particular, they both expect content of the
               form "key1=value1&key2=value2", with percent-encoding for special
               characters; the only difference is that one expects its content as a
               command-line parameter and the other accepts its content from a file. In
               particular, --post-file is not for transmitting files as form
               attachments: those must appear as "key=value" data (with appropriate
               percent-coding) just like everything else. Wget does not currently
               support "multipart/form-data" for transmitting POST data; only
               "application/x-www-form-urlencoded". Only one of --post-data and
               --post-file should be specified.
    

    Regarding your authentication token, it should either be provided in the header, in the path of the url, or in the data itself. This must be indicated somewhere in the documentation of the service you use. In a POST request, as in a GET request, you must specify the data using keys and values. This way the server will be able to receive multiple information with specific names. It's similar with variables.

    Hence, you can't just send a magic token to the server, you also need to specify the name of the key. If the key is "token", then it should be token=YOUR_TOKEN.

    wget --post-data 'user=foo&password=bar' http://example.com/auth.php
    

    Also, you should consider using curl if you can because it is easier to send files using it. There are many examples on the Internet for that.

    0 讨论(0)
提交回复
热议问题