首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Laravel上的Diawi获取应用程序下载链接

如何从Laravel上的Diawi获取应用程序下载链接
EN

Stack Overflow用户
提问于 2020-02-08 18:21:27
回答 1查看 114关注 0票数 0

如何在laravel中获取上传应用程序的可下载链接?我想在mysql中存储链接。我已经使用curl上传应用程序。这是我的代码!

代码语言:javascript
复制
$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;   
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-09 02:25:18

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

链接格式类似于

代码语言:javascript
复制
 https://upload.diawi.com/status?token={TOKEN}&job={JOB_ID}

尝尝这个

代码语言:javascript
复制
    $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密钥时,屏蔽它们总是更好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60125854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档