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-file
is 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-data
en --post-file
werken op dezelfde manier: het enige verschil is dat --post-data
stelt u in staat om de gegevens in de opdrachtregel te specificeren, terwijl u met --post-file
het 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.