cURL JavaScript TypeScript Python C# Java Go
curl - X POST 'https://api.testingapis.com/api/formdata/upload' \
- H 'X-TestingApis-Key: YOUR_API_KEY' \
- F 'file=@notes.txt' \
- F 'description=Meeting notes' const form = new FormData();
form.append("file", fileInput.files[0]); // notes.txt
form.append("description", "Meeting notes");
const res = await fetch("https://api.testingapis.com/api/formdata/upload", {
method: "POST",
headers: {
"X-TestingApis-Key": "YOUR_API_KEY",
},
body: form,
});
console.log(res.status, await res.text());declare const fileInput: HTMLInputElement; // your <input type="file">
// The shape of the example response in the docs.
type ApiResponse = {
message: string;
id: number;
fileName: string;
description: string;
};
const form = new FormData();
form.append("file", fileInput.files![0]); // notes.txt
form.append("description", "Meeting notes");
const res = await fetch("https://api.testingapis.com/api/formdata/upload", {
method: "POST",
headers: {
"X-TestingApis-Key": "YOUR_API_KEY",
},
body: form,
});
const body = (await res.json()) as ApiResponse;
console.log(res.status, body);import requests
res = requests.post(
"https://api.testingapis.com/api/formdata/upload",
headers={
"X-TestingApis-Key": "YOUR_API_KEY",
},
files={"file": open("notes.txt", "rb")},
data={"description": "Meeting notes"},
)
print(res.status_code, res.text)using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.testingapis.com/api/formdata/upload");
request.Headers.TryAddWithoutValidation("X-TestingApis-Key", "YOUR_API_KEY");
var form = new MultipartFormDataContent();
form.Add(new StringContent("Meeting notes"), "description");
form.Add(new StreamContent(File.OpenRead("notes.txt")), "file", "notes.txt");
request.Content = form;
using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");import java.io.ByteArrayOutputStream;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
String boundary = "----testingapis" + System.nanoTime();
ByteArrayOutputStream body = new ByteArrayOutputStream();
body.write(("--" + boundary + "\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nMeeting notes\r\n").getBytes(StandardCharsets.UTF_8));
body.write(("--" + boundary + "\r\nContent-Disposition: form-data; name=\"file\"; filename=\"notes.txt\"\r\nContent-Type: application/octet-stream\r\n\r\n").getBytes(StandardCharsets.UTF_8));
body.write(Files.readAllBytes(Path.of("notes.txt")));
body.write("\r\n".getBytes(StandardCharsets.UTF_8));
body.write(("--" + boundary + "--\r\n").getBytes(StandardCharsets.UTF_8));
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.testingapis.com/api/formdata/upload"))
.header("X-TestingApis-Key", "YOUR_API_KEY")
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.method("POST", HttpRequest.BodyPublishers.ofByteArray(body.toByteArray()))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}package main
import (
"bytes"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
)
func main() {
var body bytes.Buffer
form := multipart.NewWriter(&body)
form.WriteField("description", "Meeting notes")
file, err := os.Open("notes.txt")
if err != nil {
panic(err)
}
defer file.Close()
part, err := form.CreateFormFile("file", "notes.txt")
if err != nil {
panic(err)
}
if _, err := io.Copy(part, file); err != nil {
panic(err)
}
form.Close()
req, err := http.NewRequest("POST", "https://api.testingapis.com/api/formdata/upload", &body)
if err != nil {
panic(err)
}
req.Header.Set("X-TestingApis-Key", "YOUR_API_KEY")
req.Header.Set("Content-Type", form.FormDataContentType())
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println(res.StatusCode, string(data))
}