changing valums-file-upload to plupload
-
I have a question regarding the file uploader for buddypress activity plus (valums-file-upload). I would like to know if I can change it to plupload. The reason being plupload has an option resize files before upload and it has much more features than the outdated “valums”. I found tis code in fileuploader.js
var uploader = new qq.FileUploader({ "element": $('#med_tmp_photo')[0], //"listElement": $('#med_tmp_photo_list')[0], "allowedExtensions": ['jpg', 'jpeg', 'png', 'gif'], //"action": ajaxurl, "params": { "action": "med_preview_photo" }, "onComplete": createPhotoPreview, template: '<div class="qq-uploader">' + '<div class="qq-upload-drop-area"><span>' + broadcast.drop_files + '</span></div>' + '<div class="qq-upload-button">' + broadcast.upload_file + '</div>' + '<ul class="qq-upload-list">' + '</div>' });
and I want to exchange it with the plupload ,which is something like this
var uploader = new plupload.Uploader({ runtimes : 'html5,flash,silverlight', // Set runtimes, here it will use HTML5, if not supported will use flash, etc. browse_button : 'pickfiles', // The id on the select files button multi_selection: false, // Allow to select one file each time container : 'uploader', // The id of the upload form container max_file_size : '800mb', // Maximum file size allowed url : //'upload.php', // The url to the upload.php file resize: { width: 300, height: 300, quality: 70 }, flash_swf_url : 'js/plupload.flash.swf', // The url to thye flash file silverlight_xap_url : 'js/plupload.silverlight.xap', // The url to the silverlight file filters : [ {title : "Image files", extensions : "jpg,gif,png,jpeg"} ] // Filter the files that will be showed on the select files window }); // RUNTIME uploader.bind('Init', function(up, params) { $('#runtime').text(params.runtime); }); // Start Upload //////////////////////////////////////////// // When the button with the id "#uploadfiles" is clicked the upload will start $('#med_submit').click(function(e) { uploader.start(); e.preventDefault(); });
and changed file_uploader.php to the following
class plupload_1 { /** * Save the file to the specified path * @return boolean TRUE on success */ function save($path) { $input = fopen("php://input", "r"); $temp = tmpfile(); $realSize = stream_copy_to_stream($input, $temp); fclose($input); $target = fopen($path, "w"); fseek($temp, 0, SEEK_SET); stream_copy_to_stream($temp, $target); fclose($target); return true; } } /** * Handle file uploads via regular form post (uses the $_FILES array) */ class plupload_2 { function __construct(){ $this->file = new plupload_1(); } /** * Returns array('success'=>true, 'file'=>$filename) or array('error'=>'error message') */ function PlupLoad($uploadDirectory, $replaceOldFile = FALSE){ if (!is_writable($uploadDirectory)){ return array('error' => "Server error. Upload directory isn't writable."); } $pathinfo = pathinfo($uploadDirectory); $filename = strtolower($pathinfo['filename']); //$filename = md5(uniqid()); // $ext = strtolower($pathinfo['extension']); $filename = sanitize_file_name($filename); if ($this->file->save($uploadDirectory . $filename . '.' . $ext)){ return array('success'=>true, 'file'=> $filename . '.' . $ext); } else { return array('error'=> 'Could not save uploaded file.' . 'The upload was cancelled, or server error encountered'); } } }
finally changed the ‘ajax_preview_photo’ in ‘class_bpfb_binder.php’
from this:
function ajax_preview_photo () { $dir = BPFB_PLUGIN_BASE_DIR . '/img/'; require_once(BPFB_PLUGIN_BASE_DIR . '/lib/external/file_uploader.php'); $uploader = new qqFileUploader(array('jpg', 'jpeg', 'png', 'gif')); $result = $uploader->handleUpload(BPFB_TEMP_IMAGE_DIR); //header('Content-type: application/json'); // For some reason, IE doesn't like this. Skip. echo htmlspecialchars(json_encode($result), ENT_NOQUOTES); exit(); }
to this:
function ajax_preview_photo () { //$dir = BPFB_PLUGIN_BASE_DIR . '/img/'; require_once(BPFB_PLUGIN_BASE_DIR . '/lib/external/file_uploader.php'); $uploader = new plupload_2(); $result = $uploader->PlupLoad(BPFB_TEMP_IMAGE_DIR); //header('Content-type: application/json'); // For some reason, IE doesn't like this. Skip. echo htmlspecialchars(json_encode($result), ENT_NOQUOTES); exit(); }
Can you please help with this situation. I feel resize before upload is a very important feature for a production website that is serious about performance and bandwidth.
- The topic ‘changing valums-file-upload to plupload’ is closed to new replies.