NIC télécharger dit "ID de téléchargement non valide", impossible de le faire fonctionner

StackOverflow https://stackoverflow.com//questions/11677128

  •  12-12-2019
  •  | 
  •  

Question

im essayant de mettre en œuvre Niceicit avec le plug-in Nicupload, mais lorsque je sélectionne un fichier à télécharger, il indique "Échec de téléchargement de l'image", et la réponse du serveur indique "ID de téléchargement non valide".

Ceci est le code qui appelle le script et initialise:

<script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
<script type="text/javascript">//<![CDATA[
bkLib.onDomLoaded(function() {
new nicEditor({uploadURI : '../../nicedit/nicUpload.php'}).panelInstance('area1');
});
//]]>
</script>

Le chemin d'accès à Nicupload.php est correct et le code est celui qui peut être trouvé dans la documentation: http://nicedit.com/src/nicupload/nicupload.js

J'ai fait les modifications de dossier de téléchargement et définissez des autorisations d'écriture.Selon la documentation ( http://wiki.nicedit.com/w/page/515 / Configuration% 20Options ), c'est tout, mais je continue à obtenir des erreurs.Des idées?

Était-ce utile?

La solution

Vous pouvez passer manuellement un identifiant à votre script: E.g Nicupload.php? Id= Intropichereader et il deviendra Intropicheader.jpg (ou une extension appropriée) dans le dossier Images que vous avez défini.

Cependant, j'ai remarqué que ce script est cassé et ne peut pas accéder à l'option de configuration Uploaduri si spécifié directement dans NiceDitorVancedButton.extend ({. Ceci entraîne une ressource «inconnue» relativement pathérée, ce qui entraîne une erreur. .

La documentation implique autrement et le fait que le Nicuri a été spécifié ici pour imgur.com (peut-être comme défaut) m'a donné l'impression que je pourrais également ajouter une référence uploaduri au script Nicupload.php dans une seule place plutôt que sur chaque instanciation de l'éditeur.

mise à jour

Cela fonctionne si vous le transmettez lors de l'instanciation, ce que je suppose, permettent une population d'identification dynamique facile.

Malheureusement, le Nicupload.php est criblé d'erreurs et de la sortie n'est pas JSON. L'éditeur s'attend à analyser JSON et à trouver une balise de script et des erreurs avec un jeton inattendu "<".

Il existe un radeau d'autres erreurs que je tenterai d'identifier:

dans nicedidit.js

  1. A.append ("Image") devrait être en infraction A.Append ("Nicimage")
  2. ceci.onuploaded (d.upload) devrait devenir cela.Auploaded (D)
  3. ceci.onuploaded (d) doit être déplacé dans le bloc d'essai après Var D= JSON.PARSE (C.ResponseText) pour fixer des problèmes de portée variable
  4. b.image.width doit devenir b.width

    à Nicupload.php

    1. La sortie JSON n'est pas formée correctement, commencez la sortie HTML et la sortie Just JSON_ENCODE ($ Status).
    2. Sortie JSON doit renvoyer une paire de clé / valeur nommée Liens plutôt que l'URL Bien que renommer le Var D= B.Links sur Var D= B.URL dans NiceDIT.js suffirait également comme un correctif.

      PHP et code JavaScript laisse beaucoup à désirer, je reçois de nombreuses erreurs régulièrement et je les ai correctement réparées.

Autres conseils

Après avoir cherché une solution longtemps (beaucoup de poteaux sans solution réelle), j'ai maintenant corrigé le code moi-même.Je suis maintenant capable de télécharger une image sur mon propre serveur.Thx à Firebug et Eclipse; -)

Le problème principal est que le Nicupload.php est vieux et ne fonctionne pas avec la fonction actuelle de téléchargement Nicicit-Upload.

manquant est la manipulation des erreurs, n'hésitez pas à ajouter ceci ...

Ajoutez le Niceder Sitor à votre fichier PHP et configurez-le pour utiliser NiceDit.PHP:

new nicEditor({iconsPath : 'pics/nicEditorIcons.gif', uploadURI : 'script/nicUpload.php'}

Téléchargez la niceditact.js non compressé et modifier les lignes suivantes dans Nicedit.js:

uploadFile : function() {
var file = this.fileInput.files[0];
if (!file || !file.type.match(/image.*/)) {
  this.onError("Only image files can be uploaded");
  return;
}
this.fileInput.setStyle({ display: 'none' });
this.setProgress(0);

var fd = new FormData(); 
fd.append("image", file);
fd.append("key", "b7ea18a4ecbda8e92203fa4968d10660");
var xhr = new XMLHttpRequest();
xhr.open("POST", this.ne.options.uploadURI || this.nicURI);

xhr.onload = function() {
  try {
    var res = JSON.parse(xhr.responseText);
  } catch(e) {
    return this.onError();
  }
  //this.onUploaded(res.upload); // CHANGE HERE
  this.onUploaded(res);
}.closure(this);
xhr.onerror = this.onError.closure(this);
xhr.upload.onprogress = function(e) {
  this.setProgress(e.loaded / e.total);
}.closure(this);
xhr.send(fd);

},

onUploaded : function(options) {
this.removePane();
//var src = options.links.original; // CHANGE HERE
var src = options['url'];
if(!this.im) {
  this.ne.selectedInstance.restoreRng();
  //var tmp = 'javascript:nicImTemp();';
  this.ne.nicCommand("insertImage", src);
  this.im = this.findElm('IMG','src', src);
}
var w = parseInt(this.ne.selectedInstance.elm.getStyle('width'));
if(this.im) {
  this.im.setAttributes({
    src : src,
    width : (w && options.image.width) ? Math.min(w, options.image.width) : ''
  });
}

}

changer le Nicupload.php comme celui-ci

<?php
/* NicEdit - Micro Inline WYSIWYG
 * Copyright 2007-2009 Brian Kirchoff
 *
 * NicEdit is distributed under the terms of the MIT license
 * For more information visit http://nicedit.com/
 * Do not remove this copyright message
 *
 * nicUpload Reciever Script PHP Edition
 * @description: Save images uploaded for a users computer to a directory, and
 * return the URL of the image to the client for use in nicEdit
 * @author: Brian Kirchoff <briankircho@gmail.com>
 * @sponsored by: DotConcepts (http://www.dotconcepts.net)
 * @version: 0.9.0
 */

/* 
* @author: Christoph Pahre
* @version: 0.1
* @description: different modification, so that this php file is working with the newest nicEdit.js (needs also modification - @see) 
* @see http://stackoverflow.com/questions/11677128/nicupload-says-invalid-upload-id-cant-make-it-works
*/

define('NICUPLOAD_PATH', '../images/uploadedImages'); // Set the path (relative or absolute) to
                                      // the directory to save image files

define('NICUPLOAD_URI', '../images/uploadedImages');   // Set the URL (relative or absolute) to
                                      // the directory defined above

$nicupload_allowed_extensions = array('jpg','jpeg','png','gif','bmp');

if(!function_exists('json_encode')) {
    die('{"error" : "Image upload host does not have the required dependicies (json_encode/decode)"}');
}

if($_SERVER['REQUEST_METHOD']=='POST') { // Upload is complete

    $file = $_FILES['image'];
    $image = $file['tmp_name'];
    $id = $file['name'];

    $max_upload_size = ini_max_upload_size();
    if(!$file) {
        nicupload_error('Must be less than '.bytes_to_readable($max_upload_size));
    }

    $ext = strtolower(substr(strrchr($file['name'], '.'), 1));
    @$size = getimagesize($image);
    if(!$size || !in_array($ext, $nicupload_allowed_extensions)) {
        nicupload_error('Invalid image file, must be a valid image less than '.bytes_to_readable($max_upload_size));
    }

    $filename = $id;
    $path = NICUPLOAD_PATH.'/'.$filename;

    if(!move_uploaded_file($image, $path)) {
        nicupload_error('Server error, failed to move file');
    }

    $status = array();
    $status['done'] = 1;
    $status['width'] = $size[0];
    $rp = realpath($path);
    $status['url'] =  NICUPLOAD_URI ."/".$id;


    nicupload_output($status, false);
    exit;
} 

// UTILITY FUNCTIONS

function nicupload_error($msg) {
    echo nicupload_output(array('error' => $msg)); 
}

function nicupload_output($status, $showLoadingMsg = false) {
    $script = json_encode($status);
    $script = str_replace("\\/", '/', $script);
    echo $script;

    exit;
}

function ini_max_upload_size() {
    $post_size = ini_get('post_max_size');
    $upload_size = ini_get('upload_max_filesize');
    if(!$post_size) $post_size = '8M';
    if(!$upload_size) $upload_size = '2M';

    return min( ini_bytes_from_string($post_size), ini_bytes_from_string($upload_size) );
}

function ini_bytes_from_string($val) {
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);
    switch($last) {
        // The 'G' modifier is available since PHP 5.1.0
        case 'g':
            $val *= 1024;
        case 'm':
            $val *= 1024;
        case 'k':
            $val *= 1024;
    }
    return $val;
}

function bytes_to_readable( $bytes ) {
    if ($bytes<=0)
        return '0 Byte';

    $convention=1000; //[1000->10^x|1024->2^x]
    $s=array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB');
    $e=floor(log($bytes,$convention));
    return round($bytes/pow($convention,$e),2).' '.$s[$e];
}

?>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top