我已經在我的網站(使用Codeigniter建成)集成了summernote和文本工作正常。但是對於圖片上傳,出現了以下問題。Summernote圖像上傳不起作用codeigniter
Summernote將圖像讀取爲base64。現在這對於小圖像來說效果很好,但是一旦圖像很大,圖像最終不會由於數據庫中base64創建的巨大字符串而呈現。
所以我想保存圖像在我的服務器,然後使用該圖像的鏈接。
以下是代碼: 的腳本summernote:
<script type="text/javascript">
$(document).ready(function() {
$('#summernote').summernote({
height: 300,
onImageUpload: function(files) {
sendFile(files[0]);
}
});
function sendFile(file) {
data = new FormData();
data.append("files", file);
upload_url = "<?php echo base_url(); ?>" + "general/upload_image";
$.ajax({
data: data,
type: "POST",
url: upload_url,
cache: false,
contentType: false,
processData: false,
success: function(url) {
$(this).summernote("insertImage", url);
}
});
}
});
php的upload_image功能:
public function upload_image()
{
if ($_FILES['file']['name']) {
if (!$_FILES['file']['error']) {
$name = md5(rand(100, 200));
$ext = explode('.', $_FILES['file']['name']);
$filename = $name . '.' . $ext[1];
$destination = 'http://sitename.com/dist/img/blogimg/' . $filename; //change this directory
$location = $_FILES["file"]["tmp_name"];
move_uploaded_file($location, $destination);
echo 'http://sitename.com/dist/img/blogimg/' . $filename;//change this URL
}
else
{
echo $message = 'Ooops! Your upload triggered the following error: '.$_FILES['file']['error'];
}
}
}
現在
,當我在summernote或拖動點擊插入圖片和放下圖像控制檯中顯示以下錯誤的多個實例:
>Uncaught TypeError: Cannot read property 'nodeType' of undefined
這就是我想達到的, N.B.這位編輯是爲了博客。 1.用戶點擊插入圖片並從他的電腦上傳圖片。 2.圖像顯示在編輯器中(但在這一步沒有上傳到服務器)。 3.當用戶點擊提交按鈕時,圖像應該保存爲預定義文件夾中的圖像文件。 4.當頁面呈現它應該有
<img src="mysite.com/path_to_image">
現在是像
<img src="data:image/jpeg;base64,/9j/4AAQSkZJR....">)
請注意,我嘗試使用onImageUpload回調之內,但結果什麼也沒有實際發生,無論是圖像被上傳到編輯器或服務器中的文件夾。
我在哪裏錯了.... ??請幫我解決這個問題...
只是一個建議codeigniter有它自己的上傳庫https://www.codeigniter.com/user_guide/libraries/file_uploading.html – user4419336
你最初的問題與基地64的大小可以通過更改爲LongText –
@ wolfgang1983上傳lib應該用在upload_image()函數中嗎?你能否提供一個示例代碼來展示如何使用這個上傳庫來處理POST數據。 ??我不清楚... – user3040284