当我通过POST发送大于20MB的视频文件时,为什么json响应为NULL?

时间:2013-07-27 20:14:46

标签: ios post json

我正在创建POST请求并使用它将视频发送到服务器。在服务器端,我解码视频,并将其保存到文件目录。如果发送的视频低于20MB,一切都按预期工作,我得到一个有效的JSON响应,否则我的响应字典为NULL或返回“操作无法完成。(Cocoa error 3840。)”

    $result = mysqli insert statement;

$videoDirectory = 'userVideos/'.$unique_id.'.mp4';
    $decodedVideo =base64_decode($video);


    file_put_contents($videoDirectory, $decodedVideo);

    if (!$result['error']) 
    {
     $e = "register into Str33trider successfully";
     print json_encode(array('results'=>$videoCaption));
     exit();

    }

我甚至编辑了我的apache配置文件

   <IfModule mod_php5.c>
   php_value post_max_size 200M
   php_value upload_max_filesize 200M
   php_value memory_limit 320M
   php_value max_file_uploads 200M
   php_value max_execution_time 30000
   php_value max_input_time 259200
   php_value session.gc_maxlifetime 1200
   </IfModule>

1 个答案:

答案 0 :(得分:0)

收到POST请求的回复后,请先检查状态代码。

如果POST请求成功:

如果状态代码等于200(OK)或204(无内容),则响应正文可能为空或描述操作的结果。使用任一状态代码,请求都没有创建可由URI标识的资源。

如果状态代码等于201(已创建),则请求在服务器上创建资源,响应正文可能会描述操作的结果,并且响应应包含可以找到新资源的位置标头。

通常,Web服务API描述有关响应主体(如果有)及其内容类型和字符编码的详细信息。可能有多种格式可以发送,例如JSON或XML。

如果POST请求失败:

服务器将发送相应的状态代码和可选的响应正文,其中包含有关错误的详细信息。通常,服务器可以发送与请求的Accept头不匹配的内容类型的响应主体。

注意:

客户端应始终检查响应正文的内容类型(如果有)并相应地对其进行解码。在服务器错误的情况下,内容类型通常可以是text / html而不是Accept标头中指定的内容类型,例如,应用/ JSON。

因此,如果您记录Cocoa错误3840的完整错误描述,您将会读到给定的文本可能不是JSON,因为它必须以'['或'{'开头。这表明您从服务器收到的错误消息不是JSON。解码错误消息,使其可读,并将其记录到控制台,以查看服务器告诉您的内容。