nicUploadは"無効なアップロードID"さんでの作品
質問
Imて実施nicEditのnicuploadプラグインしてしまっているんですけど選択ファイルをアップロードでは"失敗の画像アップロード、サーバの応答は"無効なアップロードID".
このコードを呼び出スクリプトおよび初期化し:
<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>
への道nicUpload.php 内容に間違いがないか確認し、コードを見つけることができる、ドキュメンテーション http://nicedit.com/src/nicUpload/nicUpload.js
また、アップロードフォルダの変更や設定の書きアクセス権を表します。に応じてドキュメント(http://wiki.nicedit.com/w/page/515/Configuration%20Options),私がしましたが、続けます。そのアイデア?
解決
できる手動でパスidをスクリプト:e.g nicUpload.php?id=introPicHeaderとなりまintroPicHeader.jpg (または適切な拡張子なし)での画像フォルダで定義されています。
しかし、シュマンセミナーなど(I)このスクリプトは、アクセスできない設定のオプションuploadURI指定された場合に直接nicEdit.js 中nicEditorAdvancedButton.延長({.この原因へのアクセスを比較的pathed"Unknown"資源、エラーとなります。
の文書が合、そのnicURI指定されたこちらimgur.com もしデフォルト)にしてくれたの印象をかも追加uploadURIへの参照nicUpload.php スクリプトを単一の場所ではなく、各エディタスインスタンス
更新
この作品の場合でインスタンス生成時には、かなりしやすい動id。
残念ながら、nicUpload.php はriddledとの誤差が出力はJSON.編集予定の構文解析JSONを検出するとスクリプトタグとエラーが発生想定外のトークン"<".
がボッシュはその他の誤りますとは別:
にnicEdit.js
- A.append("イメージ")のgdp A.append("nicImage")
- ます。onUploaded(D.アップロード)となります。onUploaded(D)
- ます。onUploaded(D)に移設する必要があるのtryブロック後var D=JSON.parse(C.responseText)で固定可変範囲の問題
- B.イメージです。幅なものになる必要B.幅
にnicUpload.php
- JSON出力を得ることはできません正しくコメントアウトのhtml出力および出力だけでjson_encode($状況等)
- JSON出力を返しますキーと値のペア名のリンクはurlが変更にvar D=B.へのリンクvar D=B.url nicEdit.js も十分としています。
両phpとjavascriptのコードは葉で多くを望む人にとって多くの誤差が定期的において固定した。
他のヒント
ソリューションを長い時間(実際のソリューションなしの投稿の多く)を探した後、私は今コードを修正しました。私は自分のサーバーにイメージをアップロードすることができました。THXからFirebugとEclipse; - )
主な問題は、nicupload.phpが古く、現在のNicedit-Upload関数を使用して動作していないことです。
欠落はエラー処理で、これを追加してください。
niceditorをPHPファイルに追加し、nicedit.phpを使用するようにを設定します。
.
new nicEditor({iconsPath : 'pics/nicEditorIcons.gif', uploadURI : 'script/nicUpload.php'}
nicedit.jsをダウンロードしてダウンロードをダウンロードし、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) : ''
});
}
}
このようなnicupload.phpを変更する
.<?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];
}
?>