44 lines
922 B
Markdown
44 lines
922 B
Markdown
|
|
```go title="Go"
|
||
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
"encoding/json"
|
||
|
|
"io"
|
||
|
|
"log"
|
||
|
|
"mime/multipart"
|
||
|
|
"net/http"
|
||
|
|
"os"
|
||
|
|
)
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
file, err := os.Open("document.pdf")
|
||
|
|
if err != nil {
|
||
|
|
log.Fatalf("failed to open file: %v", err)
|
||
|
|
}
|
||
|
|
defer file.Close()
|
||
|
|
|
||
|
|
body := &bytes.Buffer{}
|
||
|
|
writer := multipart.NewWriter(body)
|
||
|
|
part, _ := writer.CreateFormFile("files", "document.pdf")
|
||
|
|
io.Copy(part, file)
|
||
|
|
writer.Close()
|
||
|
|
|
||
|
|
resp, err := http.Post("http://localhost:8000/extract", writer.FormDataContentType(), body)
|
||
|
|
if err != nil {
|
||
|
|
log.Fatalf("request failed: %v", err)
|
||
|
|
}
|
||
|
|
defer resp.Body.Close()
|
||
|
|
|
||
|
|
if resp.StatusCode != http.StatusOK {
|
||
|
|
var errResp map[string]string
|
||
|
|
json.NewDecoder(resp.Body).Decode(&errResp)
|
||
|
|
log.Fatalf("error: %s: %s", errResp["error_type"], errResp["message"])
|
||
|
|
}
|
||
|
|
|
||
|
|
var result map[string]interface{}
|
||
|
|
json.NewDecoder(resp.Body).Decode(&result)
|
||
|
|
println("Success:", result["content"].(string))
|
||
|
|
}
|
||
|
|
```
|