Locken
Wie man auf dem curl manpage, Uploads dieser Form getan werden durch Daten spezifiziert Strings lesen können, und kann direkt aus einer Datei mit --data-binary @/path/to/file
Syntax erfolgen:
--data-binary <data>
(HTTP) This posts data exactly as specified with no extra processing whatsoever.
If you start the data with the letter @, the rest should be a filename. Data is
posted in a similar manner as --data-ascii does, except that newlines and car‐
riage returns are preserved and conversions are never done.
If this option is used several times, the ones following the first will append
data as described in -d, --data.
Wenn das Bild ist nur als Binär-String in Ihrer Sprache verfügbar, zum Beispiel als Node.js-Puffer, und Sie wollen nicht das Dateisystem treffen, dann müssen Sie es möglicherweise entgehen, indem Sie es in '
Zeichen einschließen und jedes '
Zeichen darin ersetzen der Saite mit einer entsprechenden Flucht Seq wie '\''
oder, wenn Sie sich unwohl fühlen, '"'"'
. (Recall, dass echo 'abc'"def"'ghi'
wird echo abcdefghi
als eine einzige Einheit.)
Node.js
Knoten ist ein wenig mehr zu vergeben, weil es einen expliziten Puffertyp hat, aber es hat ein bisschen mehr Konstruktion erfordert, damit es funktioniert . Hier verpacke ich die Rückgabedaten in einem Promise, falls Sie es benötigen:
const http = require("http");
function upload(image_buffer, image_id) {
return new Promise((accept, reject) => {
let options = {
method: "PUT",
hostname: "maven.nabisco.com",
port: 80,
path: "/artifactory/cdt-repo/folder/" + image_id,
headers: {
"Content-Type": "application/octet-stream",
"Content-Length": image_buffer.length
}
};
let data = [];
let request = http.request(options, response => {
response.on("data", chunk => data.push(chunk));
response.on("end",() =>
accept({
headers: response.headers,
statusCode: response.statusCode,
data: Buffer.concat(data)
})
);
});
request.on("error", err => reject(err));
request.write(image_buffer);
request.end();
});
}
Mögliches Duplikat von [Binärdaten in JSON String. Etwas besser als Base64] (https://stackoverflow.com/questions/1443158/binary-data-in-json-string-etwas-besser-besser-base64). Siehe die Antwort von @ Ælex. – cybersam
nein, ich versuche nicht binäre Daten in JSON zu setzen, ich bin auf der Suche binäre in der Anfrage zu schreiben, und JSON insgesamt zu vermeiden –