【问题标题】:How to get app download link from Diawi on Laravel如何在 Laravel 上从 Diawi 获取应用程序下载链接
【发布时间】:2020-02-08 10:21:26
【问题描述】:

如何在 laravel 中获取已上传应用的可下载链接?我想将链接存储在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;   

【问题讨论】:

    标签: php laravel api download diawi


    【解决方案1】:

    很简单,当您上传成功时,Diawi 会返回一个 Job ID,您可以通过它创建一个跟踪链接并在其上发出 GET 请求。作为回应,您可以获得下载链接(如果文件未通过 Diawi 的检查,则可能会出现错误消息......格式错误?)

    链接格式是这样的

     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 密钥时最好屏蔽它们

    【讨论】:

      猜你喜欢
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多