簡體   English   中英

如何正確地將某些 python 代碼重寫為 curl php

[英]how to properly re-write certain python code to curl php

Drchrono API 在 python 中提供了用於上傳醫療文件的示例代碼

這是 python 中的示例

import datetime, json, requests

headers = {
    'Authorization': 'Bearer ACCESS_TOKEN',
}
data = {
    'doctor': 1234,
    'patient': 5678,
    'description': 'Short document description here',
    'date': '2014-02-24',
    'metatags': json.dumps(['tag1', 'tag2']),
}
with open('/path/to/your.pdf', 'rb') as f:
    files = {'document': f}
    requests.post(
        'https://drchrono.com/api/documents',
        data=data, files=files, headers=headers,
    )

根據 Drchrono API,內容類型存在幾個缺陷:創建或更新嵌套對象以及創建多個對象,僅支持使用 application/json 內容類型。

僅支持使用表單/多部分內容類型的文件。

這是我的問題:

我正在嘗試將上述代碼重寫為 php 以使我能夠按照此處的示例代碼將文件上傳到 API

但它會引發錯誤

{"document":["The submitted data was not a file. Check the encoding type on the form."]}.

這是代碼

表格.php

<form method="post" action="document_upload.php" enctype="multipart/form-data">
    <input type="text" name="doctor" value="2846">
    <input type="text" name="patient" value="91189">
    <input type="text" name="description" value="Patient Medical History Form">
    <input type="text" name="date" value="2015-11-02">
    <input type="file" name="document">
    <input type="submit" name="submit" value="Upload">

上傳.php

$fsize = $_FILES['document']['size']; 
$ftmp = $_FILES['document']['tmp_name'];
$fname= $_FILES["document"]["name"];
$tok='my-token-goes here';
$doctor =$_POST['doctor'];
$patient =$_POST['patient'];

$data_params= array(
'document' => $ftmp,
    'doctor' => $doctor,
    'patient' => $patient,
    'date' => "2015-11-02",
    'description' => "Patient Medical History File"
); 



$url ='https://app.drchrono.com/api/documents';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, TRUE);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer $tok", 'Content-Type: application/json'));  
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer $tok"));  

curl_setopt($ch, CURLOPT_POSTFIELDS, $data_params);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($ch); 

echo $output;

解決了。 問題是我使用了過期的令牌

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM