Verzoek plaatsen met Wget?

Ik wil wget gebruiken om een afbeelding naar een verre server te uploaden, met behulp van een authenticatietoken, ‘AUTH_1624582364932749DFHDD’, naar de map ‘test’.

Deze opdracht werkt niet (autorisatie mislukt) en ik wil zeker weten dat het niet om syntaxis gaat:

wget --post-file=nature.jpg http://ipadress:8080/v1/AUTH_test/test/ --post-data="AUTH_1624582364932749DFHDD"

Heeft u suggesties?


Antwoord 1, autoriteit 100%

Wget ondersteunt momenteel geen “multipart/form-data”-gegevens. --post-fileis niet bedoeld voor het verzenden van bestanden als formulierbijlagen, het verwacht gegevens met de vorm: key=value&otherkey=example. Het is eigenlijk mogelijk om andere formaten (json) te posten als je de bijbehorende header meestuurt.

--post-dataen --post-filewerken op dezelfde manier: het enige verschil is dat --post-datastelt u in staat om de gegevens in de opdrachtregel te specificeren, terwijl u met --post-filehet pad kunt specificeren van het bestand dat de te verzenden gegevens bevat.

Hier is de documentatie:

--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.

Met betrekking tot uw authenticatietoken moet het in de koptekst worden verstrekt, in het pad van de URL, of in de gegevens zelf. Dit moet ergens in de documentatie van de service die u gebruikt, wordt aangegeven. In een postverzoek, zoals in een ontvangen verzoek, moet u de gegevens opgeven met behulp van sleutels en waarden. Op deze manier kan de server meerdere informatie ontvangen met specifieke namen. Het is vergelijkbaar met variabelen.

Vandaar dat u geen magisch token naar de server kunt sturen, moet u ook de naam van de sleutel opgeven. Als de sleutel “token” is, moet het token=YOUR_TOKEN.

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

Ook moet u overwegen om Curl te gebruiken als u kunt, omdat het gemakkelijker is om bestanden te verzenden met behulp van het. Daar zijn veel voorbeelden op internet voor.

Other episodes