Avatar billede djblaz Nybegynder
14. januar 2012 - 20:58 Der er 40 kommentarer og
1 løsning

jQuery File Upload Error: SyntaxError: JSON.parse: unexpected character

hej
Jeg har en multi upload som skal gemme i en mysql database og ligger billederne op på en webserver men kan ikke få det til at virke

koden på første side:

<!DOCTYPE HTML>
<!--
/*
* jQuery File Upload Plugin HTML Example 5.0.6
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2010, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* http://creativecommons.org/licenses/MIT/
*/
-->
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/themes/base/jquery-ui.css" id="theme">
<link rel="stylesheet" href="http://light-storm.dk/light-storm.dk/style/jquery.fileupload-ui.css">
<link rel="stylesheet" href="http://light-storm.dk/light-storm.dk/style/filstyle.css">
</head>
<body>
<div id="fileupload">
    <form action="http://www.light-storm.dk/light-storm.dk/admin/page/upload.php" method="POST" enctype="multipart/form-data">
        <div class="fileupload-buttonbar">
            <label class="fileinput-button">
                <span>Add files...</span>
                <input type="file" name="files[]" multiple>
            </label>
            <button type="submit" class="start">Start upload</button>
            <button type="reset" class="cancel">Cancel upload</button>
            <button type="button" class="delete">Delete files</button>
        </div>
    </form>
    <div class="fileupload-content">
        <table class="files"></table>
        <div class="fileupload-progressbar"></div>
    </div>
</div>
<script id="template-upload" type="text/x-jquery-tmpl">
    <tr class="template-upload{{if error}} ui-state-error{{/if}}">
        <td class="preview"></td>
        <td class="name">${name}</td>
        <td class="size">${sizef}</td>
        {{if error}}
            <td class="error" colspan="2">Error:
                {{if error === 'maxFileSize'}}File is too big
                {{else error === 'minFileSize'}}File is too small
                {{else error === 'acceptFileTypes'}}Filetype not allowed
                {{else error === 'maxNumberOfFiles'}}Max number of files exceeded
                {{else}}${error}
                {{/if}}
            </td>
        {{else}}
            <td class="progress"><div></div></td>
            <td class="start"><button>Start</button></td>
        {{/if}}
        <td class="cancel"><button>Cancel</button></td>
    </tr>
</script>
<script id="template-download" type="text/x-jquery-tmpl">
    <tr class="template-download{{if error}} ui-state-error{{/if}}">
        {{if error}}
            <td></td>
            <td class="name">${name}</td>
            <td class="size">${sizef}</td>
            <td class="error" colspan="2">Error:
                {{if error === 1}}File exceeds upload_max_filesize (php.ini directive)
                {{else error === 2}}File exceeds MAX_FILE_SIZE (HTML form directive)
                {{else error === 3}}File was only partially uploaded
                {{else error === 4}}No File was uploaded
                {{else error === 5}}Missing a temporary folder
                {{else error === 6}}Failed to write file to disk
                {{else error === 7}}File upload stopped by extension
                {{else error === 'maxFileSize'}}File is too big
                {{else error === 'minFileSize'}}File is too small
                {{else error === 'acceptFileTypes'}}Filetype not allowed
                {{else error === 'maxNumberOfFiles'}}Max number of files exceeded
                {{else error === 'uploadedBytes'}}Uploaded bytes exceed file size
                {{else error === 'emptyResult'}}Empty file upload result
                {{else}}${error}
                {{/if}}
            </td>
        {{else}}
            <td class="preview">
                {{if thumbnail_url}}
                    <a href="${url}" target="_blank"><img src="${thumbnail_url}"></a>
                {{/if}}
            </td>
            <td class="name">
                <a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
            </td>
            <td class="size">${sizef}</td>
            <td colspan="2"></td>
        {{/if}}
        <td class="delete">
            <button data-type="${delete_type}" data-url="${delete_url}">Delete</button>
        </td>
    </tr>
</script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>
<script src="http://light-storm.dk/light-storm.dk/admin/java/jquery.iframe-transport.js"></script>
<script src="http://light-storm.dk/light-storm.dk/admin/java/jquery.fileupload.js"></script>
<script src="http://light-storm.dk/light-storm.dk/admin/java/jquery.fileupload-ui.js"></script>
<script src="http://light-storm.dk/light-storm.dk/admin/java/application.js"></script>
</body>
</html>













koden på upload.php






<?php
$getsideinfo1 = mysql_query("SELECT * FROM $admin_galleri_group ORDER BY id DESC LIMIT 1")or die(mysql_error());
$sideinfo1 = mysql_fetch_array($getsideinfo1);   
$g_id = $sideinfo1[src];
error_reporting(E_ALL | E_STRICT);

class UploadHandler
{
    private $options;
   
    function __construct($options=null) {
        $this->options = array(
            'script_url' => $_SERVER['PHP_SELF'],
            'upload_dir' => '/usr/home/web/web36238/light-storm.dk/grafik/galleri/'.$g_id.'/',
            'upload_url' => '/light-storm.dk/grafik/galleri/'.$g_id.'/',
            'param_name' => $g_id,
            // The php.ini settings upload_max_filesize and post_max_size
            // take precedence over the following max_file_size setting:
            'max_file_size' => null,
            'min_file_size' => 1,
            'accept_file_types' => '/.+$/i',
            'max_number_of_files' => null,
            'discard_aborted_uploads' => true,
            'image_versions' => array(
                // Uncomment the following version to restrict the size of
                // uploaded images. You can also add additional versions with
                // their own upload directories:
                /*
                'large' => array(
                    'upload_dir' => dirname(__FILE__).'/files/',
                    'upload_url' => dirname($_SERVER['PHP_SELF']).'/files/',
                    'max_width' => 1920,
                    'max_height' => 1200
                ),
                */
                'thumbnail' => array(
                    'upload_dir' => '/usr/home/web/web36238/light-storm.dk/grafik/galleri/'.$g_id.'/tmp/',
                    'upload_url' => '/light-storm.dk/grafik/galleri/'.$g_id.'/tmp/',
                    'max_width' => 160,
                    'max_height' => 120
                )
            )
        );
        if ($options) {
            $this->options = array_replace_recursive($this->options, $options);
        }
    }
   
    private function get_file_object($file_name) {
        $file_path = $this->options['upload_dir'].$file_name;
        if (is_file($file_path) && $file_name[0] !== '.') {
            $file = new stdClass();
            $file->name = $file_name;
            $file->size = filesize($file_path);
            $file->url = $this->options['upload_url'].rawurlencode($file->name);
            foreach($this->options['image_versions'] as $version => $options) {
                if (is_file($options['upload_dir'].$file_name)) {
                    $file->{$version.'_url'} = $options['upload_url']
                        .rawurlencode($file->name);
                }
            }
            $file->delete_url = $this->options['script_url']
                .'?file='.rawurlencode($file->name);
            $file->delete_type = 'DELETE';
            return $file;
        }
        return null;
    }
   
    private function get_file_objects() {
        return array_values(array_filter(array_map(
            array($this, 'get_file_object'),
            scandir($this->options['upload_dir'])
        )));
    }

    private function create_scaled_image($file_name, $options) {
        $file_path = $this->options['upload_dir'].$file_name;
        $new_file_path = $options['upload_dir'].$file_name;
        list($img_width, $img_height) = @getimagesize($file_path);
        if (!$img_width || !$img_height) {
            return false;
        }
        $scale = min(
            $options['max_width'] / $img_width,
            $options['max_height'] / $img_height
        );
        if ($scale > 1) {
            $scale = 1;
        }
        $new_width = $img_width * $scale;
        $new_height = $img_height * $scale;
        $new_img = @imagecreatetruecolor($new_width, $new_height);
        switch (strtolower(substr(strrchr($file_name, '.'), 1))) {
            case 'jpg':
            case 'jpeg':
                $src_img = @imagecreatefromjpeg($file_path);
                $write_image = 'imagejpeg';
                break;
            case 'gif':
                @imagecolortransparent($new_img, @imagecolorallocate($new_img, 0, 0, 0));
                $src_img = @imagecreatefromgif($file_path);
                $write_image = 'imagegif';
                break;
            case 'png':
                @imagecolortransparent($new_img, @imagecolorallocate($new_img, 0, 0, 0));
                @imagealphablending($new_img, false);
                @imagesavealpha($new_img, true);
                $src_img = @imagecreatefrompng($file_path);
                $write_image = 'imagepng';
                break;
            default:
                $src_img = $image_method = null;
        }
        $success = $src_img && @imagecopyresampled(
            $new_img,
            $src_img,
            0, 0, 0, 0,
            $new_width,
            $new_height,
            $img_width,
            $img_height
        ) && $write_image($new_img, $new_file_path);
        // Free up memory (imagedestroy does not delete files):
        @imagedestroy($src_img);
        @imagedestroy($new_img);
        return $success;
    }
   
    private function has_error($uploaded_file, $file, $error) {
        if ($error) {
            return $error;
        }
        if (!preg_match($this->options['accept_file_types'], $file->name)) {
            return 'acceptFileTypes';
        }
        if ($uploaded_file && is_uploaded_file($uploaded_file)) {
            $file_size = filesize($uploaded_file);
        } else {
            $file_size = $_SERVER['CONTENT_LENGTH'];
        }
        if ($this->options['max_file_size'] && (
                $file_size > $this->options['max_file_size'] ||
                $file->size > $this->options['max_file_size'])
            ) {
            return 'maxFileSize';
        }
        if ($this->options['min_file_size'] &&
            $file_size < $this->options['min_file_size']) {
            return 'minFileSize';
        }
        if (is_int($this->options['max_number_of_files']) && (
                count($this->get_file_objects()) >= $this->options['max_number_of_files'])
            ) {
            return 'maxNumberOfFiles';
        }
        return $error;
    }
   
    private function handle_file_upload($uploaded_file, $name, $size, $type, $error) {
        $file = new stdClass();
        // Remove path information and dots around the filename, to prevent uploading
        // into different directories or replacing hidden system files.
        // Also remove control characters and spaces (\x00..\x20) around the filename:
        $file->name = trim(basename(stripslashes($name)), ".\x00..\x20");
        $file->size = intval($size);
        $file->type = $type;
        $error = $this->has_error($uploaded_file, $file, $error);
        if (!$error && $file->name) {
            $file_path = $this->options['upload_dir'].$file->name;
            $append_file = is_file($file_path) && $file->size > filesize($file_path);
            clearstatcache();
            if ($uploaded_file && is_uploaded_file($uploaded_file)) {
                // multipart/formdata uploads (POST method uploads)
                if ($append_file) {
                    file_put_contents(
                        $file_path,
                        fopen($uploaded_file, 'r'),
                        FILE_APPEND
                    );
                } else {
                    move_uploaded_file($uploaded_file, $file_path);
                }
            } else {
                // Non-multipart uploads (PUT method support)
                file_put_contents(
                    $file_path,
                    fopen('php://input', 'r'),
                    $append_file ? FILE_APPEND : 0
                );
            }
            $file_size = filesize($file_path);
            if ($file_size === $file->size) {
                $file->url = $this->options['upload_url'].rawurlencode($file->name);
                foreach($this->options['image_versions'] as $version => $options) {
                    if ($this->create_scaled_image($file->name, $options)) {
                        $file->{$version.'_url'} = $options['upload_url']
                            .rawurlencode($file->name);
                    }
                }
            } else if ($this->options['discard_aborted_uploads']) {
                unlink($file_path);
                $file->error = 'abort';
            }
            $file->size = $file_size;
            $file->delete_url = $this->options['script_url']
                .'?file='.rawurlencode($file->name);
            $file->delete_type = 'DELETE';
        } else {
            $file->error = $error;
        }
        return $file;
    }
   
    public function get() {
        $file_name = isset($_REQUEST['file']) ?
            basename(stripslashes($_REQUEST['file'])) : null;
        if ($file_name) {
            $info = $this->get_file_object($file_name);
        } else {
            $info = $this->get_file_objects();
        }
        header('Content-type: application/json');
        echo json_encode($info);
    }
   
    public function post() {
        $upload = isset($_FILES[$this->options['param_name']]) ?
            $_FILES[$this->options['param_name']] : array(
                'tmp_name' => null,
                'name' => null,
                'size' => null,
                'type' => null,
                'error' => null
            );
        $info = array();
        if (is_array($upload['tmp_name'])) {
            foreach ($upload['tmp_name'] as $index => $value) {
                $info[] = $this->handle_file_upload(
                    $upload['tmp_name'][$index],
                    isset($_SERVER['HTTP_X_FILE_NAME']) ?
                        $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
                    isset($_SERVER['HTTP_X_FILE_SIZE']) ?
                        $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
                    isset($_SERVER['HTTP_X_FILE_TYPE']) ?
                        $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
                    $upload['error'][$index]
                );
            }
        } else {
            $info[] = $this->handle_file_upload(
                $upload['tmp_name'],
                isset($_SERVER['HTTP_X_FILE_NAME']) ?
                    $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'],
                isset($_SERVER['HTTP_X_FILE_SIZE']) ?
                    $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'],
                isset($_SERVER['HTTP_X_FILE_TYPE']) ?
                    $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'],
                $upload['error']
            );
        }
        header('Vary: Accept');
        if (isset($_SERVER['HTTP_ACCEPT']) &&
            (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) {
            header('Content-type: application/json');
        } else {
            header('Content-type: text/plain');
        }
        echo json_encode($info);
    }
   
    public function delete() {
        $file_name = isset($_REQUEST['file']) ?
            basename(stripslashes($_REQUEST['file'])) : null;
        $file_path = $this->options['upload_dir'].$file_name;
        $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
        if ($success) {
            foreach($this->options['image_versions'] as $version => $options) {
                $file = $options['upload_dir'].$file_name;
                if (is_file($file)) {
                    unlink($file);
                }
            }
        }
        header('Content-type: application/json');
        echo json_encode($success);
    }
}

$upload_handler = new UploadHandler();

header('Pragma: no-cache');
header('Cache-Control: private, no-cache');
header('Content-Disposition: inline; filename="files.json"');
header('X-Content-Type-Options: nosniff');

switch ($_SERVER['REQUEST_METHOD']) {
    case 'HEAD':
    case 'GET':
        $upload_handler->get();
        break;
    case 'POST':
        $upload_handler->post();
        break;
    case 'DELETE':
        $upload_handler->delete();
        break;
    case 'OPTIONS':
        break;
    default:
        header('HTTP/1.0 405 Method Not Allowed');
}
?>
Avatar billede olebole Juniormester
14. januar 2012 - 22:03 #1
<ole>

Fejlen tyder på, der ikke er tale om valid JSON. Prøv at lægge et link til siden

/mvh
</bole>
Avatar billede djblaz Nybegynder
15. januar 2012 - 02:45 #2
Avatar billede djblaz Nybegynder
15. januar 2012 - 02:47 #3
Avatar billede djblaz Nybegynder
15. januar 2012 - 02:48 #4
Avatar billede olebole Juniormester
15. januar 2012 - 14:47 #5
Ellers tak! Sluk for lyden, eller giv mig en mulighed for det
Avatar billede djblaz Nybegynder
15. januar 2012 - 16:06 #6
så er der ikke lyd på
Avatar billede olebole Juniormester
15. januar 2012 - 16:31 #7
Årsagen til fejlen er, at PHP udskriver følgende fejl:

<br />
<b>Parse error</b>:  syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in <b>/usr/home/web/web36238/light-storm.dk/admin/page/upload.php</b> on line <b>9</b><br />

- men det kan ikke passe med den kode, du har skrevet for upload.php. Hvis jeg sammenholder fejlen og koden, skulle fejlen ligge her:

class UploadHandler
{
    private $options; // <-- i denne linje

- men det gør den ikke. Derfor tvivler jeg på, at det, du viser som upload.php, skulle være hele koden
Avatar billede djblaz Nybegynder
15. januar 2012 - 17:14 #8
jeg havde et gammelt upload system som virket der var bare ikke den mulighed med at trække og slippe flere fil



koden til det gamle hvis det kan brugs



$getsideinfo1 = mysql_query("SELECT * FROM $admin_galleri_group ORDER BY id DESC LIMIT 1")or die(mysql_error());
$sideinfo1 = mysql_fetch_array($getsideinfo1);   
// width & height på billedet
// sæt height til 'auto' hvis den skal skalere den efter $width
$width_img = 600;
$height_img = "auto";
$width_tmp = 160;
$height_tmp = 120;

// Kvaliteten på billedet (0-100)
$img_quality = 100;
$tmp_quality = 100;

//filtyper der er tilladt (kun .jpg indtil videre)
$filetype_granted = array("jpg", "jpeg");





if ($_POST['submit_upload']) {
   
    $g_id = $sideinfo1[src];
   

        for($i = 0; $i < count($_FILES["fil"]["name"]); $i++) {

            if ($_FILES["fil"]["name"][$i] !="") {
       
                $foto = 1;
                $fejl = 0;

                //Her skal filen flyttes fra
                $src = $_FILES['fil']['tmp_name'][$i];

                //Hvilken type fil arbejder vi med?
                $ext = strtolower(end(explode(".", $_FILES['fil']['name'][$i])));
           
                if(!in_array($ext, $filetype_granted)) {
                    echo "Filen's filtype (.".$ext.") er ikke tilladt. Filen '".$_FILES["fil"]["name"][$i]."' kan derfor ikke uploades!<br><br>\n";
                    $fejl = 1;
                }

                if ($fejl == 0) {

                    //Her giver vi billedet et andet navn, så der ikke kommer to ens navne...
                    $tid = time();
                    $nytNavn = $tid . "(".($i + 1).")." . $ext;

                    //Her er vores destination for det store billede
                    $dst = "/usr/home/web/web36238/grafik/galleri/cache/" . $nytNavn;
           

                    //her uploades det store billede:
                    move_uploaded_file($src, $dst);
                   
                    //billed-funktioner:
                    $image = $dst;


                    //hvis billedet eksisterer
                    if(file_exists($image)) {

                        //billedet eksisterer
                        $foto = 1;

                        //find størrelsen
                        $imgsize = getimagesize($image);

                        //sæt det nye billedes bredde til $width,
                        //og regn højden ud så propertionerne passer
                        if ($height_img == "auto") {
                            $height_img = $imgsize[1] / ($imgsize[0] / $width_img);
                        }

                        //lav et nyt, blankt billede
                        $dst_img = imagecreatetruecolor($width_img,$height_img);

                        //åbn kildebilledet
                        $src_img = ImageCreateFromJpeg("$image");

                        //kopiér og resize kildebilledet over i det nye billede
                        ImageCopyResampled($dst_img,$src_img,0,0,0,0,$width_img,$height_img,ImageSX($src_img),ImageSY($src_img));

                        //lav output til mappen /tmp/
                        ImageJpeg($dst_img, "../grafik/galleri/$g_id/" . $nytNavn, $img_quality);
           
                        //sæt url'en til billedet
                        $imgurl = "../grafik/galleri/$g_id/" . $nytNavn;
               
       
                        //find størrelsen
                        $imgsize = getimagesize($image);

                        //sæt det nye billedes bredde til $width,
                        //og regn højden ud så propertionerne passer
                        if ($height_tmp == "auto") {
                            $height_tmp = $imgsize[1] / ($imgsize[0] / $width_tmp);
                        }

                        //lav et nyt, blankt billede
                        $dst_tmp = imagecreatetruecolor($width_tmp,$height_tmp);

                        //åbn kildebilledet
                        $src_tmp = ImageCreateFromJpeg("$image");

                        //kopiér og resize kildebilledet over i det nye billede
                        ImageCopyResampled($dst_tmp,$src_tmp,0,0,0,0,$width_tmp,$height_tmp,ImageSX($src_tmp),ImageSY($src_tmp));

                       
                        // this script creates a watermarked image from an image file - can be a .jpg .gif or .png file
// where watermark.gif is a mostly transparent gif image with the watermark - goes in the same directory as this script
// where this script is named watermark.php
// call this script with an image tag
// <img src="watermark.php?path=imagepath"> where path is a relative path from the document root - such as subdirectory/image.jpg
$imagesource = "/usr/home/web/web36238/grafik/galleri/$g_id/$nytNavn";
if (!file_exists($imagesource)) die('Virker ikke');
$filetype = strtolower(substr($imagesource,strlen($imagesource)-4,4));
if($filetype == ".gif") $image = @imagecreatefromgif($imagesource); 
if($filetype == ".jpg") $image = @imagecreatefromjpeg($imagesource); 
if($filetype == ".png") $image = @imagecreatefrompng($imagesource); 
if (empty($image)) die();
$sort = ImageColorAllocate($image,255,255,0);
ImageTTFText ($image,12,0,5,440,$sort,"fonts/AntsyPants.ttf","$g_id");
$sort = ImageColorAllocate($image,255,255,0);
$watermark = ImageTTFText ($image,16,0,410,440,$sort,"fonts/Baubau.ttf","$admin_watermark"); 

imagejpeg($image,$imagesource);
imagedestroy($image);

                       
                           
                       
                        //lav output til mappen /tmp/
                        ImageJpeg($dst_tmp, "../grafik/galleri/$g_id/tmp/" . $nytNavn, $tmp_quality);
           
                        //sæt url'en til billedet
                        $tmpurl = "../grafik/galleri/$g_id/tmp/" . $nytNavn;
       
                    } else {

                        //foto findes ikke
                        $foto = 0;
                    }
                 
    $imagesourcetmp = "/usr/home/web/web36238/grafik/galleri/$g_id/tmp/$nytNavn";
if (!file_exists($imagesourcetmp)) die('Virker ikke');
$filetypetmp = strtolower(substr($imagesourcetmp,strlen($imagesourcetmp)-4,4));
if($filetypetmp == ".gif") $imagetmp = @imagecreatefromgif($imagesourcetmp); 
if($filetypetmp == ".jpg") $imagetmp = @imagecreatefromjpeg($imagesourcetmp); 
if($filetypetmp == ".png") $imagetmp = @imagecreatefrompng($imagesourcetmp); 
if (empty($imagetmp)) die();
$sort = ImageColorAllocate($imagetmp,255,255,0);
$watermarktmp = ImageTTFText ($imagetmp,10,0,0,117,$sort,"fonts/AntsyPants.ttf","$admin_watermark");
$imagewidthtmp = imagesx($imagetmp);
$imageheighttmp = imagesy($imagetmp); 
imagejpeg($imagetmp,$imagesourcetmp);
imagedestroy($imagetmp);
     
                   
                    //Her ligges oplysningerne ind databasen - huske at connecte til den!
                    if ($foto != 0) {
                        unlink($dst);
                        $query    = "INSERT INTO $admin_galleri (img, parent) VALUES ('$nytNavn','$sideinfo1[id]')";
                        mysql_query($query);
                    } else {
                        echo "Der skete en fejl ved upload.<br>".
                            "\nPrøv igen eller tjek om sti'en til din 'cache' er rigtig<br><br>\n";
                    }
                }
            }
        }
   
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>

<br>
hvor mange billeder skal uploades:<br>
<a href="?page=galleri&side=album&af=5">5</a>&nbsp;
<a href="?page=galleri&side=album&af=10">10</a>&nbsp;
<a href="?page=galleri&side=album&af=20">20</a>&nbsp;
<a href="?page=galleri&side=album&af=30">30</a>&nbsp;
<a href="?page=galleri&side=album&af=40">40</a>&nbsp;
<a href="?page=galleri&side=album&af=50">50</a>&nbsp;
<a href="?page=galleri&side=album&af=75">75</a>&nbsp;
<a href="?page=galleri&side=album&af=100">100</a>&nbsp;

<form enctype="multipart/form-data" action="?page=galleri&side=album" method="post">
<table cellspacing="2" cellpadding="2" border="0">


<?php
if (empty($_GET['af'])) {
    $antal_filer = 1;
} else {
    $antal_filer = $_GET['af'];
}
for($i = 0; $i < $antal_filer; $i++) {
?>

<tr>
    <td>vælg fil:</td>
    <td><input name="fil[]" type="file" style="width: 800px; font: 10px Arial;"></td>
</tr>

<?php
}
?>

<tr>
    <td></td>
    <td><input type="submit" name="submit_upload" value="Send File" style="font: 10px Arial;"> </td>
</tr>

</table>
</form>
Avatar billede olebole Juniormester
15. januar 2012 - 17:23 #9
Jaja, du har sikkert haft gang i et utal af koder, men der er kun én fil, der har interesse i denne forbindelse: Den, du bruger og har problemer med.

Responsen fra din applikation siger, du har en fejl i linje 9 i upload.php, men i den kode, du viser, er der ingen fejl i linje 9 - så du viser ikke den kode, du bruger.

Vis os den kode, du bruger. Ellers er du ikke mulig at hjælpe
Avatar billede djblaz Nybegynder
15. januar 2012 - 17:41 #10
her er upload.php
det er en kopi paste fra zend

<?php
$getsideinfo1 = mysql_query("SELECT * FROM $admin_galleri_group ORDER BY id DESC LIMIT 1")or die(mysql_error());
$sideinfo1 = mysql_fetch_array($getsideinfo1);   
$g_id = $sideinfo1[src];
error_reporting(E_ALL | E_STRICT);

class UploadHandler
{
    private $options;
   
    function __construct($options=null) {
        $this->options = array(
            'script_url' => $_SERVER['PHP_SELF'],
            'upload_dir' => '/usr/home/web/web36238/light-storm.dk/grafik/galleri/'.$g_id.'/',
            'upload_url' => '/light-storm.dk/grafik/galleri/'.$g_id.'/',
            'param_name' => $g_id,
            // The php.ini settings upload_max_filesize and post_max_size
            // take precedence over the following max_file_size setting:
            'max_file_size' => null,
            'min_file_size' => 1,
            'accept_file_types' => '/.+$/i',
            'max_number_of_files' => null,
            'discard_aborted_uploads' => true,
            'image_versions' => array(
                // Uncomment the following version to restrict the size of
                // uploaded images. You can also add additional versions with
                // their own upload directories:
                /*
                'large' => array(
                    'upload_dir' => dirname(__FILE__).'/files/',
                    'upload_url' => dirname($_SERVER['PHP_SELF']).'/files/',
                    'max_width' => 1920,
                    'max_height' => 1200
                ),
                */
                'thumbnail' => array(
                    'upload_dir' => '/usr/home/web/web36238/light-storm.dk/grafik/galleri/'.$g_id.'/tmp/',
                    'upload_url' => '/light-storm.dk/grafik/galleri/'.$g_id.'/tmp/',
                    'max_width' => 160,
                    'max_height' => 120
                )
            )
        );
        if ($options) {
            $this->options = array_replace_recursive($this->options, $options);
        }
    }
   
    private function get_file_object($file_name) {
        $file_path = $this->options['upload_dir'].$file_name;
        if (is_file($file_path) && $file_name[0] !== '.') {
            $file = new stdClass();
            $file->name = $file_name;
            $file->size = filesize($file_path);
            $file->url = $this->options['upload_url'].rawurlencode($file->name);
            foreach($this->options['image_versions'] as $version => $options) {
                if (is_file($options['upload_dir'].$file_name)) {
                    $file->{$version.'_url'} = $options['upload_url']
                        .rawurlencode($file->name);
                }
            }
            $file->delete_url = $this->options['script_url']
                .'?file='.rawurlencode($file->name);
            $file->delete_type = 'DELETE';
            return $file;
        }
        return null;
    }
   
    private function get_file_objects() {
        return array_values(array_filter(array_map(
            array($this, 'get_file_object'),
            scandir($this->options['upload_dir'])
        )));
    }

    private function create_scaled_image($file_name, $options) {
        $file_path = $this->options['upload_dir'].$file_name;
        $new_file_path = $options['upload_dir'].$file_name;
        list($img_width, $img_height) = @getimagesize($file_path);
        if (!$img_width || !$img_height) {
            return false;
        }
        $scale = min(
            $options['max_width'] / $img_width,
            $options['max_height'] / $img_height
        );
        if ($scale > 1) {
            $scale = 1;
        }
        $new_width = $img_width * $scale;
        $new_height = $img_height * $scale;
        $new_img = @imagecreatetruecolor($new_width, $new_height);
        switch (strtolower(substr(strrchr($file_name, '.'), 1))) {
            case 'jpg':
            case 'jpeg':
                $src_img = @imagecreatefromjpeg($file_path);
                $write_image = 'imagejpeg';
                break;
            case 'gif':
                @imagecolortransparent($new_img, @imagecolorallocate($new_img, 0, 0, 0));
                $src_img = @imagecreatefromgif($file_path);
                $write_image = 'imagegif';
                break;
            case 'png':
                @imagecolortransparent($new_img, @imagecolorallocate($new_img, 0, 0, 0));
                @imagealphablending($new_img, false);
                @imagesavealpha($new_img, true);
                $src_img = @imagecreatefrompng($file_path);
                $write_image = 'imagepng';
                break;
            default:
                $src_img = $image_method = null;
        }
        $success = $src_img && @imagecopyresampled(
            $new_img,
            $src_img,
            0, 0, 0, 0,
            $new_width,
            $new_height,
            $img_width,
            $img_height
        ) && $write_image($new_img, $new_file_path);
        // Free up memory (imagedestroy does not delete files):
        @imagedestroy($src_img);
        @imagedestroy($new_img);
        return $success;
    }
   
    private function has_error($uploaded_file, $file, $error) {
        if ($error) {
            return $error;
        }
        if (!preg_match($this->options['accept_file_types'], $file->name)) {
            return 'acceptFileTypes';
        }
        if ($uploaded_file && is_uploaded_file($uploaded_file)) {
            $file_size = filesize($uploaded_file);
        } else {
            $file_size = $_SERVER['CONTENT_LENGTH'];
        }
        if ($this->options['max_file_size'] && (
                $file_size > $this->options['max_file_size'] ||
                $file->size > $this->options['max_file_size'])
            ) {
            return 'maxFileSize';
        }
        if ($this->options['min_file_size'] &&
            $file_size < $this->options['min_file_size']) {
            return 'minFileSize';
        }
        if (is_int($this->options['max_number_of_files']) && (
                count($this->get_file_objects()) >= $this->options['max_number_of_files'])
            ) {
            return 'maxNumberOfFiles';
        }
        return $error;
    }
   
    private function handle_file_upload($uploaded_file, $name, $size, $type, $error) {
        $file = new stdClass();
        // Remove path information and dots around the filename, to prevent uploading
        // into different directories or replacing hidden system files.
        // Also remove control characters and spaces (\x00..\x20) around the filename:
        $file->name = trim(basename(stripslashes($name)), ".\x00..\x20");
        $file->size = intval($size);
        $file->type = $type;
        $error = $this->has_error($uploaded_file, $file, $error);
        if (!$error && $file->name) {
            $file_path = $this->options['upload_dir'].$file->name;
            $append_file = is_file($file_path) && $file->size > filesize($file_path);
            clearstatcache();
            if ($uploaded_file && is_uploaded_file($uploaded_file)) {
                // multipart/formdata uploads (POST method uploads)
                if ($append_file) {
                    file_put_contents(
                        $file_path,
                        fopen($uploaded_file, 'r'),
                        FILE_APPEND
                    );
                } else {
                    move_uploaded_file($uploaded_file, $file_path);
                }
            } else {
                // Non-multipart uploads (PUT method support)
                file_put_contents(
                    $file_path,
                    fopen('php://input', 'r'),
                    $append_file ? FILE_APPEND : 0
                );
            }
            $file_size = filesize($file_path);
            if ($file_size === $file->size) {
                $file->url = $this->options['upload_url'].rawurlencode($file->name);
                foreach($this->options['image_versions'] as $version => $options) {
                    if ($this->create_scaled_image($file->name, $options)) {
                        $file->{$version.'_url'} = $options['upload_url']
                            .rawurlencode($file->name);
                    }
                }
            } else if ($this->options['discard_aborted_uploads']) {
                unlink($file_path);
                $file->error = 'abort';
            }
            $file->size = $file_size;
            $file->delete_url = $this->options['script_url']
                .'?file='.rawurlencode($file->name);
            $file->delete_type = 'DELETE';
        } else {
            $file->error = $error;
        }
        return $file;
    }
   
    public function get() {
        $file_name = isset($_REQUEST['file']) ?
            basename(stripslashes($_REQUEST['file'])) : null;
        if ($file_name) {
            $info = $this->get_file_object($file_name);
        } else {
            $info = $this->get_file_objects();
        }
        header('Content-type: application/json');
        echo json_encode($info);
    }
   
    public function post() {
        $upload = isset($_FILES[$this->options['param_name']]) ?
            $_FILES[$this->options['param_name']] : array(
                'tmp_name' => null,
                'name' => null,
                'size' => null,
                'type' => null,
                'error' => null
            );
        $info = array();
        if (is_array($upload['tmp_name'])) {
            foreach ($upload['tmp_name'] as $index => $value) {
                $info[] = $this->handle_file_upload(
                    $upload['tmp_name'][$index],
                    isset($_SERVER['HTTP_X_FILE_NAME']) ?
                        $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
                    isset($_SERVER['HTTP_X_FILE_SIZE']) ?
                        $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
                    isset($_SERVER['HTTP_X_FILE_TYPE']) ?
                        $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
                    $upload['error'][$index]
                );
            }
        } else {
            $info[] = $this->handle_file_upload(
                $upload['tmp_name'],
                isset($_SERVER['HTTP_X_FILE_NAME']) ?
                    $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'],
                isset($_SERVER['HTTP_X_FILE_SIZE']) ?
                    $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'],
                isset($_SERVER['HTTP_X_FILE_TYPE']) ?
                    $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'],
                $upload['error']
            );
        }
        header('Vary: Accept');
        if (isset($_SERVER['HTTP_ACCEPT']) &&
            (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) {
            header('Content-type: application/json');
        } else {
            header('Content-type: text/plain');
        }
        echo json_encode($info);
    }
   
    public function delete() {
        $file_name = isset($_REQUEST['file']) ?
            basename(stripslashes($_REQUEST['file'])) : null;
        $file_path = $this->options['upload_dir'].$file_name;
        $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
        if ($success) {
            foreach($this->options['image_versions'] as $version => $options) {
                $file = $options['upload_dir'].$file_name;
                if (is_file($file)) {
                    unlink($file);
                }
            }
        }
        header('Content-type: application/json');
        echo json_encode($success);
    }
}

$upload_handler = new UploadHandler();

header('Pragma: no-cache');
header('Cache-Control: private, no-cache');
header('Content-Disposition: inline; filename="files.json"');
header('X-Content-Type-Options: nosniff');

switch ($_SERVER['REQUEST_METHOD']) {
    case 'HEAD':
    case 'GET':
        $upload_handler->get();
        break;
    case 'POST':
        $upload_handler->post();
        break;
    case 'DELETE':
        $upload_handler->delete();
        break;
    case 'OPTIONS':
        break;
    default:
        header('HTTP/1.0 405 Method Not Allowed');
}
?>
Avatar billede olebole Juniormester
15. januar 2012 - 17:51 #11
Har du styr på, hvad det er for en PHP-version, du sidder med? Ellers skriv:

<?php phpinfo() ?>

- i en fil og kald den i browseren. Så får du en masse at vide om installationen - herunder versionsnummeret
Avatar billede djblaz Nybegynder
15. januar 2012 - 18:03 #12
FreeBSD web07 7.0-RELEASE-p11 FreeBSD 7.0-RELEASE-p11 #0: Sun Mar 22 06:24:05 UTC 2009 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
Avatar billede olebole Juniormester
15. januar 2012 - 18:32 #13
Det er selve PHP-versionen, jeg er interesseret i at kende. Måden man objekt orienterer (og definerer variabler) på skiftede med version 5. Når PHP meleder fejl i den linje (linje 9), kunne det tyde på, at du bruger en ret gammel PHP-version ældre end 5.0
Avatar billede djblaz Nybegynder
15. januar 2012 - 18:43 #14
PHP Version 4.4.9
Avatar billede olebole Juniormester
15. januar 2012 - 18:48 #15
Så bør du helt klart opgradere. Der er sket rigtig meget med PHP, og siden årsskiftet 2007/08 har version 4 ikke været supporteret
Avatar billede djblaz Nybegynder
15. januar 2012 - 19:05 #16
det er så mit webhotel som skal gøre det eller kan man selv?
Avatar billede olebole Juniormester
15. januar 2012 - 19:08 #17
Et webhotel, som kører PHP4.4.9 i 2012 bør man nok overveje at skifte ud - men i en nødsituation kan man i mangel af bedre nøjes med at få udbyderen til at opgradere
Avatar billede djblaz Nybegynder
15. januar 2012 - 19:13 #18
okay vil da prøve at skrive til dem om det er muligt
Avatar billede olebole Juniormester
15. januar 2012 - 19:17 #19
4.4.9 er en antikvitet, så det skal kunne lade sig gøre. Ellers bør du overveje at skifte til en anden udbyder  =)
Avatar billede djblaz Nybegynder
17. januar 2012 - 16:43 #20
så er jeg på en PHP Version 5.3.8
Avatar billede olebole Juniormester
17. januar 2012 - 16:47 #21
- og ...?
Avatar billede djblaz Nybegynder
17. januar 2012 - 17:05 #22
var der ikke en af gunden til den kom med fejl?
Avatar billede olebole Juniormester
17. januar 2012 - 17:15 #23
At du har skiftet version, kan ingen vel bruge til noget uden yderligere info. Er der sket ændringer - og i så fald hvilke?
Avatar billede djblaz Nybegynder
17. januar 2012 - 17:33 #24
nej den kommer med samme fejl
Avatar billede olebole Juniormester
17. januar 2012 - 17:54 #25
Der er ikke en fejl i den pågældende linje. Der være noget, du ikke fortæller
Avatar billede olebole Juniormester
17. januar 2012 - 17:58 #26
Jeg får denne fejl:

"Error: Invalid JSON: Warning: mysql_query(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/www/web/web36238/light-storm.dk/admin/page/upload.php on line 2 Warning: mysql_query(): A link to the server could not be established in /var/www/web/web36238/light-storm.dk/admin/page/upload.php on line 2 Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)"

Det ligner da ikke den, vi talte om tidligere
Avatar billede olebole Juniormester
17. januar 2012 - 18:00 #27
Hvor forbinder du til databasen i denne kode?

<?php
$getsideinfo1 = mysql_query("SELECT * FROM $admin_galleri_group ORDER BY id DESC LIMIT 1")or die(mysql_error());
$sideinfo1 = mysql_fetch_array($getsideinfo1);   
$g_id = $sideinfo1[src];
error_reporting(E_ALL | E_STRICT);

class UploadHandler
{
    private $options;
Avatar billede djblaz Nybegynder
17. januar 2012 - 18:06 #28
det gøre jeg i en include på adminsiden

men kan ikke se den sender mig til upload.php siden
Avatar billede olebole Juniormester
17. januar 2012 - 18:33 #29
upload.php har intet somhelst kendskab til adminsiden - og aner ikke, hvad der evt. måtte ske dér. Hvert PHP-dokument er sit eget selvstændige 'program'.

Du skal forbinde til DB'en i alle filer, hvor du kalder den
Avatar billede djblaz Nybegynder
17. januar 2012 - 18:38 #30
for den kan komme fra index.php?page=galleri&side=album
til upload.php hvor den ligger billederne op
kan ikke se den henter upload siden..

index.php  i head.php for den db'en på alle side er den er include

<? session_start(); ?>
<!-- Index start -->
<? include("include/head.php"); ?>
<div class="headline_start">
<?
    $site = $_GET['page'] . ".php";
    $site2 = $_ENV["REQUEST_URI"];
    $domain = "http://" . $_ENV["WEBC_USER_DOMAIN_NAME"];
    $site3 = $domain . $site2;
    $fejl = $_GET['page'];
if (!$_GET['page']) {
    include("../page/forside.php");
}else {
if (file_exists("page/".$site)) {
    // includer siden
    include("page/$site");
} else {
    // 404 FEJL
    echo "<b>404 FEJL</b>";
    echo "<hr algin='left' class='headline_end' />";
    echo "<div class ='indhold'>";
    echo "Siden findes ikke, kontakt admin";
    }   
}
?>
</div>
<? include("include/foot.php"); ?>
<!-- Index slut -->
Avatar billede olebole Juniormester
17. januar 2012 - 19:05 #31
Jeg kan ikke forstå, hvad du skriver
Avatar billede olebole Juniormester
17. januar 2012 - 19:08 #32
Den kode, vi taler om, ser sådan ud:

<?php
$getsideinfo1 = mysql_query("SELECT * FROM $admin_galleri_group ORDER BY id DESC LIMIT 1")or die(mysql_error());
$sideinfo1 = mysql_fetch_array($getsideinfo1);   
$g_id = $sideinfo1[src];
error_reporting(E_ALL | E_STRICT);

class UploadHandler
{
    private $options;

Er der en include her, jeg ikke kan få øje på ... eller?
Avatar billede djblaz Nybegynder
17. januar 2012 - 19:19 #33
nu ser koden sadan ud  og det virker heller ikke

<?php
include("http://www.light-storm.dk/light-storm.dk/admin/include/db.php");
$getsideinfo1 = mysql_query("SELECT * FROM $admin_galleri_group ORDER BY id DESC LIMIT 1")or die(mysql_error());
$sideinfo1 = mysql_fetch_array($getsideinfo1);   
$g_id = $sideinfo1[src];
error_reporting(E_ALL | E_STRICT);

class UploadHandler
{
    private $options;
Avatar billede olebole Juniormester
17. januar 2012 - 19:30 #34
"og det virker heller ikke" >> Endnu en komplet ubrugelig kommentar! Jeg orker ikke at fortsætte denne tråd
Avatar billede djblaz Nybegynder
17. januar 2012 - 19:38 #35
det er ikke et problem at få det i databasen det er et problem at det til at upload til en mappe på serveren det første jeg vil have den til så kan det andet komme bag efter
Avatar billede olebole Juniormester
17. januar 2012 - 19:45 #36
Problemet er, du ikke gider eller evner at samarbejde - og at du ikke kan overskue, hvad der er dit problem.

Den fejl, jeg nævnte i #26 er en databasefejl, som stopper resten af scriptet. Derfor er det først og fremmest et databaseproblem, du skal have løst
Avatar billede djblaz Nybegynder
17. januar 2012 - 19:55 #37
nej det er ikke fejlen for den kommer slet ikke til upload siden
der er et java filen for har slettet den så kan jeg se kan ikke kommer til at hente upload filen
Avatar billede djblaz Nybegynder
17. januar 2012 - 19:56 #38
så nu skal den bare finde upload
Avatar billede olebole Juniormester
17. januar 2012 - 20:09 #39
Jeg giver op!
Avatar billede djblaz Nybegynder
18. januar 2012 - 01:18 #40
har fået det til at virke nu det er en fejl i java filen
Avatar billede olebole Juniormester
18. januar 2012 - 01:43 #41
Sludder og vrøvl! Java bruger du såvidt jeg kan se slet ikke, så mon ikke du mener JavaScript?

Anyway, så er fejlene i #7 og #26 helt tydelige PHP-fejl. De kan umuligt være opstået som følge af fejl i en JavaScript fil
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester