REST API Media File Post

I'm trying to upload files to media gallery.. using just the rest calls. I keep getting an error: Only a posted file, file URL, or file upload context is valid, but not more than one.

This rest call is in a method called model.createMediaPost(args) but this is just the important part which is the rest call

$.telligent.evolution.post({
                url: _baseUrl + _mediaRestApi,
                callback: callback ? callback : _callbackname,
                data: { 
                   "mediagalleryid": _mediagalleryId,
                   "Name": _name,
                   "FileName":_filename, 
                   "FileData": _filedata,
                   "Tags": _tags,
                   "ContentType":_contenttype
                },
                cache:false})
                .error(function (err) {
                    console.info("error with media  file rest call:", err);
                    _error = err;
                }).success(function (r) {


                    if (typeof callback !== 'undefined' && typeof callback === 'function') {
                        callback(r);
                    }

                    _results = r;
                });

The byte[] maybe okay... but here is the code that calls the above method "createMediaPost":


var filedata = [];
var reader = new FileReader();

	reader.onloadend = function (evt){
		if (evt.target.readyState == FileReader.DONE) {
			var arrayBuffer = evt.target.result,
				array = new Uint8Array(arrayBuffer);
			for (var i = 0; i < array.length; i++) {
				filedata.push(array[i]);
			 }
		   
		  model.createMediaPost(mediagalleryId, name, description, filename, filedata, tags, function(result){
			console.info("media gallery posted");
			console.info(result);

		  });
		}

	};
	reader.readAsArrayBuffer(file);

Parents
  • Was able to use the readAsText(file) and this was easily uploaded... it's not a byte[] but it worked anyway.
    here is what worked for me... oh.. the above ContentType was "text/plain" so setting this correctly is required.

    var filedata = [];
    var reader = new FileReader();
                                    
    reader.onloadend = function (evt){
    if (evt.target.readyState == FileReader.DONE) {
     //var arrayBuffer = evt.target.result,
     //  array = new Uint8Array(arrayBuffer);
     //for (var i = 0; i < array.length; i++) {
     //filedata.push(array[i]);
     //}
     filedata =(evt.target.result);
     model.createMediaPost(options.fileUploadContext,mediagalleryId, name, description, filename, file, filedata, tags, function(result){
            console.info("media gallery posted");
            console.info(result);
                                    
     });
     }
                                    
     };
      //reader.readAsArrayBuffer(file);
      reader.readAsText(file);

Reply
  • Was able to use the readAsText(file) and this was easily uploaded... it's not a byte[] but it worked anyway.
    here is what worked for me... oh.. the above ContentType was "text/plain" so setting this correctly is required.

    var filedata = [];
    var reader = new FileReader();
                                    
    reader.onloadend = function (evt){
    if (evt.target.readyState == FileReader.DONE) {
     //var arrayBuffer = evt.target.result,
     //  array = new Uint8Array(arrayBuffer);
     //for (var i = 0; i < array.length; i++) {
     //filedata.push(array[i]);
     //}
     filedata =(evt.target.result);
     model.createMediaPost(options.fileUploadContext,mediagalleryId, name, description, filename, file, filedata, tags, function(result){
            console.info("media gallery posted");
            console.info(result);
                                    
     });
     }
                                    
     };
      //reader.readAsArrayBuffer(file);
      reader.readAsText(file);

Children
No Data