Welcome Guest, Not a member yet? Register   Sign In
Json response error
#1

(This post was last modified: 02-05-2021, 11:23 AM by pippuccio76.)

hi ,i want use plupload in one of my project , this is the method to store file:

PHP Code:
    public function upload_documenti_personali()
    {   

        
// return TRUE;

        helper('dateutility');


        // Make sure file is not cached (as it happens for example on iOS devices)
        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
        header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
        header("Cache-Control: no-store, no-cache, must-revalidate");
        header("Cache-Control: post-check=0, pre-check=0"false);
        header("Pragma: no-cache");



        $errori_invio=0;

        // Settings
        // 5 minutes execution time
        @set_time_limit(60);
        // Uncomment this one to fake upload time
        // usleep(5000);

        // Settings


        $targetDir FCPATH '/uploaded/xyz_xrh/documenti_personali_isee/'.$_SESSION['user_id'];
        //$targetDir = 'uploads';
        $cleanupTargetDir true// Remove old files
        $maxFileAge 3600// Temp file age in seconds


        // Create target dir
        if (!file_exists($targetDir)) {
            @mkdir($targetDir);
        }

        // Get a file name
        if (isset($_REQUEST["name"])) {
            $fileName $_REQUEST["name"];
        } elseif (!empty($_FILES)) {
            $fileName $_FILES["file"]["name"];
        } else {
            
            $fileName 
NULL;
        }

        if($fileName){

            $filePath $targetDir DIRECTORY_SEPARATOR $fileName;

            // Chunking might be enabled
            $chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;
            $chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;


            // Remove old temp files    
            if ($cleanupTargetDir) {
                if (!is_dir($targetDir) || !$dir opendir($targetDir)) {
                    die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}');
                }

                while (($file readdir($dir)) !== false) {
                    $tmpfilePath $targetDir DIRECTORY_SEPARATOR $file;

                    // If temp file is current file proceed to the next
                    if ($tmpfilePath == "{$filePath}.part") {
                        continue;
                    }

                    // Remove temp file if it is older than the max age and is not the current file
                    if (preg_match('/\.part$/'$file) && (filemtime($tmpfilePath) < time() - $maxFileAge)) {
                        @unlink($tmpfilePath);
                    }
                }
                closedir($dir);
            }   


            
// Open temp file
            if (!$out = @fopen("{$filePath}.part"$chunks "ab" "wb")) {
                die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
            }

            if (!empty($_FILES)) {
                if ($_FILES["file"]["error"] || !is_uploaded_file($_FILES["file"]["tmp_name"])) {
                    die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}');
                }

                // Read binary input stream and append it to temp file
                if (!$in = @fopen($_FILES["file"]["tmp_name"], "rb")) {
                    die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
                }
            } else {    
                
if (!$in = @fopen("php://input""rb")) {
                    die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
                }
            }

            while ($buff fread($in4096)) {
                fwrite($out$buff);
            }

            @fclose($out);
            @fclose($in);

            // Check if file has been uploaded
            if (!$chunks || $chunk == $chunks 1) {
                // Strip the temp .part suffix off 
                rename("{$filePath}.part"$filePath);
                
                
//recupero il file
                $file = new \CodeIgniter\Files\File($filePath);


                //recupero tutti i valori via post
                $post $this->request->getPost();


                foreach ($post as $k=>$v) {

                    //log_message('debug',$k.'=>'. $v);
                    
                
}

                //creo un nome casuale
                $newName =$post['id_users'].'*'.$post['id_isee'].'*'.$fileName;
                
                
//lo rinomino
                if($file->move($targetDir$newName)){


                }

                //$post['file_name'] =$newName ;
                
                
//$post['nome_originale'] =$fileName ;



                

            
}

 

        }

         header('Content-Type: application/json');

        // Return Success JSON-RPC response
        echo json_encode(array('{"jsonrpc" : "2.0", "result" : null, "id" : "id"}'));

        //return $this->respond( array('text' => 'Error 500','type' => 'danger') );

    }//fine upload_documenti_personali 

But i have this error :

In console a  500 error

And in response : 

<br />

<b>Fatal error</b>:  Uncaught CodeIgniter\Format\Exceptions\FormatException: Failed to parse json string, error: &quot;Type is not supported&quot;

HOw can i solve it ?
Reply
#2

it's not the json problem, but the error generate before pass to json. check value pass to json
Reply
#3

(This post was last modified: 02-06-2021, 11:29 AM by iRedds.)

without call the header function.

$this->response->setJSON(["jsonrpc" => "2.0", "result" => null, "id" => "id"])
// Content-type application/json will be set automatically with this method

For all settable headers use the $this->response->setHeader() method // fix
Reply
#4

(02-05-2021, 02:39 PM)iRedds Wrote: without call the header function.

$this->response->setJSON(["jsonrpc" => "2.0", "result" => null, "id" => "id"])
// Content-type application/json will be set automatically with this method

For all settable headers use the $this->request->setHeader() method

Work fine tank's
Reply




Theme © iAndrew 2016 - Forum software by © MyBB