如何在 Laravel 从 Diawi 下载应用程序 link
How to get app download link from Diawi on Laravel
如何在 laravel 中获取已上传应用程序的可下载 link?我想将 link 存储在 mysql 中。我使用 curl 上传应用程序。这是我的代码!
$headers = array("Content-Type: multipart/form-data");
$postfields = array(
"token" => 'IXWEsIpQBRUM4gSDu6f9aLB7W2AEPlsGb2kAJRVmRw',
"file" => new \CurlFile( $filename ),
"find_by_udid" => 0,
"wall_of_apps" => 1
// "callback_email" => ''
);
$ch = curl_init();
$options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => true,
CURLOPT_POST => 1,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $postfields,
CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
);
curl_setopt_array($ch, $options);
curl_exec($ch);
if(!curl_errno($ch))
{
$info = curl_getinfo($ch);
if ($info['http_code'] == 200)
$curl_error = "File uploaded successfully";
}
else
{
$curl_error = curl_error($ch);
}
curl_close($ch);
}
else
{
$curl_error = "Please select the file";
}
echo $curl_error;
很简单,当您上传成功后 Diawi returns 您将获得一个工作 ID,您可以通过它创建一个跟踪器 link 并对其发出 GET 请求。作为回应,您可以获得下载 link(如果文件未通过 Diawi 的检查,则会出现错误消息……格式错误?)
link 格式类似于
https://upload.diawi.com/status?token={TOKEN}&job={JOB_ID}
试试这个
$headers = array("Content-Type: multipart/form-data");
$postfields = array(
"token" => 'IXWEsIpQBRUM4gSDu6f9aLB7W2AEPlsGb2kAJRVmRw',
"file" => new \CurlFile( $filename ),
"find_by_udid" => 0,
"wall_of_apps" => 1,
//"callback_email" => ''
);
$ch = curl_init();
$options = array(
CURLOPT_URL => $url,
//CURLOPT_HEADER => true, <-- don't need this otherwise would mess the response body
CURLOPT_POST => 1,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $postfields,
CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',
CURLOPT_RETURNTRANSFER => 1 // we need to collect the diawi's json response
); // cURL options
curl_setopt_array($ch, $options);
$op = curl_exec($ch); //<-- $op contains the job details if success
if(!curl_errno($ch))
{
$info = curl_getinfo($ch);
if ($info['http_code'] == 200){
$curl_error = "File uploaded successfully"; //<-- not really you can't be sure unless you check the tracker link response
$job_details = json_decode($op); //the response is in json format
$job_id = $job_details->job;
//THE TRACKER LINK FORMAT
//https://upload.diawi.com/status?token={TOKEN}&job={JOB_ID}
$status_link = 'https://upload.diawi.com/status?token=IXWEsIpQBRUM4gSDu6f9aLB7W2AEPlsGb2kAJRVmRw&job='.$job_id;
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $status_link);
curl_setopt($ch2, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded"));
curl_setopt($ch2, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
$op2 = curl_exec($ch2);
$upload_response = json_decode($op2);
if($upload_response->status == 2000){
echo '<br>File uploaded successfully : download link ' . $upload_response->link;
}
curl_close($ch2);
}
}
else
{
$curl_error = curl_error($ch);
}
curl_close($ch);
PS:在 Q/A 平台上发布 API 密钥时最好隐藏它们
如何在 laravel 中获取已上传应用程序的可下载 link?我想将 link 存储在 mysql 中。我使用 curl 上传应用程序。这是我的代码!
$headers = array("Content-Type: multipart/form-data");
$postfields = array(
"token" => 'IXWEsIpQBRUM4gSDu6f9aLB7W2AEPlsGb2kAJRVmRw',
"file" => new \CurlFile( $filename ),
"find_by_udid" => 0,
"wall_of_apps" => 1
// "callback_email" => ''
);
$ch = curl_init();
$options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => true,
CURLOPT_POST => 1,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $postfields,
CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
);
curl_setopt_array($ch, $options);
curl_exec($ch);
if(!curl_errno($ch))
{
$info = curl_getinfo($ch);
if ($info['http_code'] == 200)
$curl_error = "File uploaded successfully";
}
else
{
$curl_error = curl_error($ch);
}
curl_close($ch);
}
else
{
$curl_error = "Please select the file";
}
echo $curl_error;
很简单,当您上传成功后 Diawi returns 您将获得一个工作 ID,您可以通过它创建一个跟踪器 link 并对其发出 GET 请求。作为回应,您可以获得下载 link(如果文件未通过 Diawi 的检查,则会出现错误消息……格式错误?)
link 格式类似于
https://upload.diawi.com/status?token={TOKEN}&job={JOB_ID}
试试这个
$headers = array("Content-Type: multipart/form-data");
$postfields = array(
"token" => 'IXWEsIpQBRUM4gSDu6f9aLB7W2AEPlsGb2kAJRVmRw',
"file" => new \CurlFile( $filename ),
"find_by_udid" => 0,
"wall_of_apps" => 1,
//"callback_email" => ''
);
$ch = curl_init();
$options = array(
CURLOPT_URL => $url,
//CURLOPT_HEADER => true, <-- don't need this otherwise would mess the response body
CURLOPT_POST => 1,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $postfields,
CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',
CURLOPT_RETURNTRANSFER => 1 // we need to collect the diawi's json response
); // cURL options
curl_setopt_array($ch, $options);
$op = curl_exec($ch); //<-- $op contains the job details if success
if(!curl_errno($ch))
{
$info = curl_getinfo($ch);
if ($info['http_code'] == 200){
$curl_error = "File uploaded successfully"; //<-- not really you can't be sure unless you check the tracker link response
$job_details = json_decode($op); //the response is in json format
$job_id = $job_details->job;
//THE TRACKER LINK FORMAT
//https://upload.diawi.com/status?token={TOKEN}&job={JOB_ID}
$status_link = 'https://upload.diawi.com/status?token=IXWEsIpQBRUM4gSDu6f9aLB7W2AEPlsGb2kAJRVmRw&job='.$job_id;
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $status_link);
curl_setopt($ch2, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded"));
curl_setopt($ch2, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
$op2 = curl_exec($ch2);
$upload_response = json_decode($op2);
if($upload_response->status == 2000){
echo '<br>File uploaded successfully : download link ' . $upload_response->link;
}
curl_close($ch2);
}
}
else
{
$curl_error = curl_error($ch);
}
curl_close($ch);
PS:在 Q/A 平台上发布 API 密钥时最好隐藏它们