preview all files
This commit is contained in:
parent
02bffcd04a
commit
d8c540d151
@ -33,6 +33,10 @@ var FileMongoShema = new Schema({
|
|||||||
lastDate: {
|
lastDate: {
|
||||||
type: String,
|
type: String,
|
||||||
unique: false
|
unique: false
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
type: String,
|
||||||
|
unique: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -80,6 +80,22 @@ router.post('/uploadFileMongo', function(req, res, next) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* SAVE URL FILE */
|
||||||
|
router.post('/saveURLFileMongo', function(req, res, next) {
|
||||||
|
console.log("New File data req.body", JSON.stringify(req.body));
|
||||||
|
|
||||||
|
FileMongo.findOneAndUpdate({_id : req.body._id, owner: req.body.owner}, {url: req.body.url},{new: true}).then((data) =>{
|
||||||
|
if(data === null){
|
||||||
|
throw new Error('File Not Found');
|
||||||
|
}
|
||||||
|
res.json({ message: 'File updated!' });
|
||||||
|
}).catch( (error) => {
|
||||||
|
//Deal with all your errors here with your preferred error handle middleware / method
|
||||||
|
res.status(500).json({ message: 'Some Error!' });
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
/* SAVE FOLDER */
|
/* SAVE FOLDER */
|
||||||
router.post('/createFolder', function(req, res, next) {
|
router.post('/createFolder', function(req, res, next) {
|
||||||
FolderMongo.create(req.body, function (err, post) {
|
FolderMongo.create(req.body, function (err, post) {
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
<td>
|
<td>
|
||||||
<button type="button" class="btn btn-sm btn-warning" mdbTooltip="Supprimer : {{file.name}}" placement="top" (click)="deleteFile(file)"><i class="fa fa-close" aria-hidden="true"></i></button>
|
<button type="button" class="btn btn-sm btn-warning" mdbTooltip="Supprimer : {{file.name}}" placement="top" (click)="deleteFile(file)"><i class="fa fa-close" aria-hidden="true"></i></button>
|
||||||
|
|
||||||
<a href="../../../public/{{ file._id.toString() }}" download="{{ file.name.toString()}}" type="">
|
<a href="{{file.data}}" download="{{ file.name.toString()}}" type="">
|
||||||
<button class="btn btn-sm btn-warning" tooltip="Télécharger : {{ file.name.toString()}} : " placement="top">
|
<button class="btn btn-sm btn-warning" tooltip="Télécharger : {{ file.name.toString()}} : " placement="top">
|
||||||
<i class="fa fa-download" aria-hidden="true"></i>
|
<i class="fa fa-download" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
@ -80,31 +80,46 @@
|
|||||||
<td>{{ file.type }}</td>
|
<td>{{ file.type }}</td>
|
||||||
<td>{{ file.lastDate }}</td>
|
<td>{{ file.lastDate }}</td>
|
||||||
<div *ngIf="file.type === ('image/jpeg')">
|
<div *ngIf="file.type === ('image/jpeg')">
|
||||||
<img src="../../../public/{{ file._id.toString() }}" class="img-fluid flex-center" width="150" height="150">
|
<img [src]=file.url class="img-fluid flex-center" width="350" height="200">
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="file.type === ('image/png')">
|
<div *ngIf="file.type === ('image/png')">
|
||||||
<img src="../../../public/{{ file._id.toString() }}" class="img-fluid flex-center" width="150" height="150">
|
<img [src]=file.url class="img-fluid flex-center" width="350" height="200">
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="file.type === ('application/pdf')">
|
<div *ngIf="file.type === ('application/pdf')">
|
||||||
<i class="fa fa-file-pdf-o" aria-hidden="true"></i>
|
<!--<i class="fa fa-file-pdf-o" aria-hidden="true"></i>-->
|
||||||
|
<object [data]=file.url type="application/pdf"
|
||||||
|
width="350" height="200" typemustmatch>
|
||||||
|
</object>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="file.type === ('video/mp4')">
|
<div *ngIf="file.type === ('video/mp4')">
|
||||||
<!--<i class="fa fa-file-movie-o" aria-hidden="true"></i>
|
<!--<i class="fa fa-file-movie-o" aria-hidden="true"></i>-->
|
||||||
<vg-player style="height: 200px; width: 200px">
|
<vg-player style="height: 200px; width: 350px">
|
||||||
<video [vgMedia]="media" #media id="singleVideo" preload="auto" controls>
|
<video [vgMedia]="media" #media id="singleVideo" preload="auto" controls>
|
||||||
<source src="../../../public/{{ file._id.toString() }}" type="video/mp4">
|
<source [src]=file.url type="video/mp4">
|
||||||
</video>
|
</video>
|
||||||
</vg-player>-->
|
</vg-player>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="file.type === ('text/plain')">
|
<div *ngIf="file.type === ('text/plain')">
|
||||||
<i class="fa fa-file-text-o" aria-hidden="true"></i>
|
|
||||||
<!--<div>{{ reader !== 'undifined' ? reader.result : ''}}</div>
|
<!--<div>{{ reader !== 'undifined' ? reader.result : ''}}</div>
|
||||||
<div>{{test}}</div>
|
<div>{{test}}</div>
|
||||||
<a href = "../../../public/{{file._id}}">show me</a>-->
|
<a href = "../../../public/{{file._id + getStringExtention(file)}}">show me</a>-->
|
||||||
|
<object [data]=file.url type="text/plain"
|
||||||
|
width="350" height="200" typemustmatch>
|
||||||
|
</object>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="file.type === ('audio/mpeg')">
|
<div *ngIf="file.type === ''">
|
||||||
|
<i class="fa fa-file-o fa-5x" aria-hidden="true" width="350" height="200"></i>
|
||||||
|
<!--<object [data]=file.url type="text/plain"
|
||||||
|
width="350" height="200" typemustmatch>
|
||||||
|
</object>-->
|
||||||
|
<!--<div>{{ reader !== 'undifined' ? reader.result : ''}}</div>
|
||||||
|
<div>{{test}}</div>
|
||||||
|
<a href = "../../../public/{{file._id + getStringExtention(file)}}">show me</a>-->
|
||||||
|
</div>
|
||||||
|
<div *ngIf="file.type === ('audio/mp3')">
|
||||||
<!--<i class="fa fa-file-audio-o" aria-hidden="true"></i>-->
|
<!--<i class="fa fa-file-audio-o" aria-hidden="true"></i>-->
|
||||||
<vg-player style="height: 50px; width: 400px">
|
<vg-player style="height: 50px; width: 350px">
|
||||||
<vg-controls>
|
<vg-controls>
|
||||||
<vg-play-pause></vg-play-pause>
|
<vg-play-pause></vg-play-pause>
|
||||||
<vg-time-display vgProperty="current" vgFormat="mm:ss"></vg-time-display>
|
<vg-time-display vgProperty="current" vgFormat="mm:ss"></vg-time-display>
|
||||||
@ -123,7 +138,7 @@
|
|||||||
</vg-controls>
|
</vg-controls>
|
||||||
|
|
||||||
<audio #media [vgMedia]="media" id="myAudio" preload="auto">
|
<audio #media [vgMedia]="media" id="myAudio" preload="auto">
|
||||||
<source src="../../../public/{{ file._id.toString() }}" type="audio/mp3">
|
<source [src]=file.url type="audio/mp3">
|
||||||
</audio>
|
</audio>
|
||||||
</vg-player>
|
</vg-player>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,6 +9,7 @@ import {Form} from "@angular/forms";
|
|||||||
import * as formData from 'form-data';
|
import * as formData from 'form-data';
|
||||||
import {forEach} from '@angular/router/src/utils/collection';
|
import {forEach} from '@angular/router/src/utils/collection';
|
||||||
import {type} from 'os';
|
import {type} from 'os';
|
||||||
|
import { DomSanitizer } from '@angular/platform-browser';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-book',
|
selector: 'app-book',
|
||||||
@ -28,7 +29,7 @@ export class BookComponent implements OnInit, OnDestroy {
|
|||||||
inputCreateFolder: String;
|
inputCreateFolder: String;
|
||||||
reader: FileReader;
|
reader: FileReader;
|
||||||
test: String;
|
test: String;
|
||||||
constructor(private http: HttpClient, private router: Router, private route: ActivatedRoute) {
|
constructor(private http: HttpClient, private router: Router, private route: ActivatedRoute, public sanitizer: DomSanitizer) {
|
||||||
this.isClickCreateFolder = false;
|
this.isClickCreateFolder = false;
|
||||||
this.fileChooseName = 'None';
|
this.fileChooseName = 'None';
|
||||||
this.filesToUpload = [];
|
this.filesToUpload = [];
|
||||||
@ -77,6 +78,14 @@ export class BookComponent implements OnInit, OnDestroy {
|
|||||||
console.log('data : ' + data);
|
console.log('data : ' + data);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
saveURLFileMongo(fileToCreateURL){
|
||||||
|
fileToCreateURL.url = '../../../public/' + fileToCreateURL._id.toString() + this.getStringExtention(fileToCreateURL);
|
||||||
|
|
||||||
|
this.http.post('/api/saveURLFileMongo', fileToCreateURL).subscribe(data => {
|
||||||
|
console.log('data : ' + data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
getfiles() {
|
getfiles() {
|
||||||
//var preview = document.querySelector('img');
|
//var preview = document.querySelector('img');
|
||||||
@ -86,46 +95,13 @@ export class BookComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
this.http.post('/api/getFileList', {mainPath : this.mainFolder.path, owner: this.currentUser.username.toString()}).subscribe(files => {
|
this.http.post('/api/getFileList', {mainPath : this.mainFolder.path, owner: this.currentUser.username.toString()}).subscribe(files => {
|
||||||
if (files) {
|
if (files) {
|
||||||
// this.allUserFile = files;
|
|
||||||
|
|
||||||
this.allUserFile = files;
|
this.allUserFile = files;
|
||||||
|
for (let f of this.allUserFile) {
|
||||||
|
f.data = f.url;
|
||||||
// for (let f of this.allUserFile) {
|
f.url = this.sanitizer.bypassSecurityTrustResourceUrl(f.url);
|
||||||
//
|
}
|
||||||
// console.log('f.type : ' + f.type);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /*
|
|
||||||
// var textFileAsBlob = new Blob([f.blob], {
|
|
||||||
// type: 'text/plain'
|
|
||||||
// });*/
|
|
||||||
//
|
|
||||||
// if (f.type === ('text/plain')) {
|
|
||||||
// JSON.stringify(f);
|
|
||||||
// //f.function( fii => {
|
|
||||||
// this.reader = new FileReader();
|
|
||||||
// var ff = new Blob([JSON.stringify(f, null, 2)], {type: 'text/plain'})
|
|
||||||
// var me = this;
|
|
||||||
// this.reader.onload = function(e:any) {
|
|
||||||
// me.test = e.target.result;
|
|
||||||
// console.log('meee.test : ' + JSON.stringify(e.target.result));
|
|
||||||
// };
|
|
||||||
// //ff.type = f.type;
|
|
||||||
// //ff.size = f.taille;
|
|
||||||
// //ff.slice(f);
|
|
||||||
// var gugu = new File(('../../../public/' + f._id)[], f.name);
|
|
||||||
// this.reader.readAsText('../../../public/' + f._id.toString(), f.name);
|
|
||||||
//
|
|
||||||
// //console.log('couilles : ' + meee.reader.readAsText(fii));
|
|
||||||
//
|
|
||||||
// //console.log('couilles : ' + JSON.stringify(f));
|
|
||||||
// //});
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.allUserFile = [];
|
this.allUserFile = [];
|
||||||
}
|
}
|
||||||
@ -157,6 +133,7 @@ export class BookComponent implements OnInit, OnDestroy {
|
|||||||
this.mainFolder = folder;
|
this.mainFolder = folder;
|
||||||
this.getfolders();
|
this.getfolders();
|
||||||
this.getfiles();
|
this.getfiles();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (path === 'Home'){
|
if (path === 'Home'){
|
||||||
this.http.post('api/createFolder', { name: 'Home', parent: '', path: 'Home', taille: 'taiile', idUser: this.currentUser._id.toString(), fileList: [], folderList: [], owner: this.currentUser.username.toString() }).subscribe(resp => {
|
this.http.post('api/createFolder', { name: 'Home', parent: '', path: 'Home', taille: 'taiile', idUser: this.currentUser._id.toString(), fileList: [], folderList: [], owner: this.currentUser.username.toString() }).subscribe(resp => {
|
||||||
@ -192,7 +169,8 @@ export class BookComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
upload() {
|
upload() {
|
||||||
if(this.mainFolder !== undefined){
|
if(this.mainFolder !== undefined){
|
||||||
this.http.post('api/uploadFileMongo', { name: this.fileChooseName.toString(), path: this.mainFolder.path.toString(), type: this.filesToUpload[0].type.toString(), taille: this.filesToUpload[0].size.toString(), idUser: this.currentUser._id.toString(), owner: this.currentUser.username.toString(), lastDate: Date.now().toString(), data: ''}).subscribe(resp => {
|
this.http.post('api/uploadFileMongo', { name: this.fileChooseName.toString(), path: this.mainFolder.path.toString(), type: this.filesToUpload[0].type.toString(), taille: this.filesToUpload[0].size.toString(), idUser: this.currentUser._id.toString(), owner: this.currentUser.username.toString(), lastDate: Date.now().toString(), url: ''}).subscribe(resp => {
|
||||||
|
this.saveURLFileMongo(resp);
|
||||||
this.makeFileRequest('http://localhost:3000/api/upload', [], this.filesToUpload, resp).then((result) => {
|
this.makeFileRequest('http://localhost:3000/api/upload', [], this.filesToUpload, resp).then((result) => {
|
||||||
this.getfiles();
|
this.getfiles();
|
||||||
this.filesToUpload = null;
|
this.filesToUpload = null;
|
||||||
@ -216,7 +194,7 @@ export class BookComponent implements OnInit, OnDestroy {
|
|||||||
var formData: any = new FormData();
|
var formData: any = new FormData();
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
|
|
||||||
formData.append("public[]", files[0], monFile._id);
|
formData.append("public[]", files[0], monFile._id + this.getStringExtention(monFile));
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState == 4) {
|
||||||
if (xhr.status == 200) {
|
if (xhr.status == 200) {
|
||||||
@ -232,4 +210,10 @@ export class BookComponent implements OnInit, OnDestroy {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getStringExtention(monFile: any){
|
||||||
|
return ( monFile.name.indexOf('.') > 0 ) ? '.' + monFile.name.split('.').pop().toLowerCase() : '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,5 +19,5 @@
|
|||||||
|
|
||||||
|
|
||||||
<button class="btn-facebook" href="/auth/facebook"></button>
|
<button class="btn-facebook" href="/auth/facebook"></button>
|
||||||
<button class="btn-github" href="/auth/github"></button>
|
<button class="btn-github" href="/auth/github"></button>
|
||||||
<button class="btn-google" href="/auth/google"></button>
|
<button class="btn-google" href="/auth/google"></button>
|
Loading…
Reference in New Issue
Block a user