2014-02-23 24 views
0

我创建了一个PHP脚本,它将从HTML表单中拾取的图像上传到Parse.com后端。Parse.com - 使用REST API和PHP上传图片

实际上它看起来像脚本正在工作,因为我得到一个URL和一个名称作为结果。 上传后,我将上传的文件与对象相关联。 结果也很好看,图像出现在数据浏览中。但如果我尝试在iOS应用程序中获取图像或在浏览器内部查看它(通过单击它),我只会得到一个拒绝访问警报或白色页面(带有损坏的图标图标)。

iOS的错误:错误域=解析代码= 150“的操作无法完成(解析错误150)

在这里你可以看到我的代码:

上传图片:

$teamImage = $_FILES["teamImage"]; 

$APPLICATION_ID = "XXXXXXXXXXXXXXXXXXX"; 
$REST_API_KEY = "XXXXXXXXXXXXXXXXXXX"; 

$urlFile = 'https://api.parse.com/1/files/' . $teamImage['name']; 
$image = $teamImage['tmp_name']; 

$headerFile = array(
    'X-Parse-Application-Id: ' . $APPLICATION_ID, 
    'X-Parse-REST-API-Key: ' . $REST_API_KEY, 
    'Content-Type: ' . $teamImage['type'], 
    'Content-Length: ' . strlen($image), 
); 

$curlFile = curl_init($urlFile); 
curl_setopt($curlFile, CURLOPT_POST, 1); 
curl_setopt($curlFile, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curlFile, CURLOPT_POSTFIELDS, $image); 
curl_setopt($curlFile, CURLOPT_HTTPHEADER, $headerFile); 
curl_setopt($curlFile, CURLOPT_SSL_VERIFYPEER, false); 

$responseFile = curl_exec($curlFile); 
$httpCodeFile = curl_getinfo($curlFile, CURLINFO_HTTP_CODE); 

$result = array('code'=>$httpCodeFile, 'response'=>$responseFile); 

关联图像对象(图像名称测试用例硬编码)

$url = 'https://api.parse.com/1/classes/Teams'; 
$data = array(
    'name' => 'Test', 
    'teamImage' => array(
     'name' => '......jpg', 
     '__type' => 'File' 
     ), 
    ); 
$_data = json_encode($data); 
$headers = array(
    'X-Parse-Application-Id: ' . $APPLICATION_ID, 
    'X-Parse-REST-API-Key: ' . $REST_API_KEY, 
    'Content-Type: application/json', 
    'Content-Length: ' . strlen($_data), 
); 

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $_data); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

$responseTwo = curl_exec($curl); 
$httpCodeTwo = curl_getinfo($curl, CURLINFO_HTTP_CODE); 

$resultTwo = array('code'=>$httpCodeTwo, 'response'=>$responseTwo); 

图片URL,这我从解析找回:http://files.parse.com/725d8f61-de18-4de5-a84c-dcc6e74c43ae/197e7bb6-62ad-4dc4-a011-6db88333ac45-BMW_1series_3door_Wallpaper_1920x1200_01.jpg

数据浏览器截图

Parse Data Browser Screenshot

回答

1

我认为你需要指定url也是

$data = array(
    'name' => 'Test', 
    'teamImage' => array(
     'name' => '......jpg', 
     '__type' => 'File', 
     'url' => '....jpg' 
    ), 
);