Upload File into specified folder

This commit is contained in:
Torsten 2020-02-08 09:28:21 +01:00
parent 86d49e5f20
commit 588830a74e
9 changed files with 112 additions and 26 deletions

View file

@ -2,15 +2,13 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="eed7de89-f054-487c-bf59-36356758942b" name="Default Changelist" comment=""> <list default="true" id="eed7de89-f054-487c-bf59-36356758942b" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/app/File.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Folder.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_02_07_094925_create_files_and_folders.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/public/upload/images/testFolder/rente.png" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/FileController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/FileController.php" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/Http/Controllers/FileController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/FileController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/js/Icon.js" beforeDir="false" afterPath="$PROJECT_DIR$/public/js/Icon.js" afterDir="false" /> <change beforePath="$PROJECT_DIR$/public/js/Icon.js" beforeDir="false" afterPath="$PROJECT_DIR$/public/js/Icon.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/js/app.js" beforeDir="false" afterPath="$PROJECT_DIR$/public/js/app.js" afterDir="false" /> <change beforePath="$PROJECT_DIR$/public/js/app.js" beforeDir="false" afterPath="$PROJECT_DIR$/public/js/app.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/store.js" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/store.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/views/Upload.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/views/Upload.vue" afterDir="false" /> <change beforePath="$PROJECT_DIR$/resources/js/views/Upload.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/views/Upload.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/views/UserList.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/views/UserList.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/routes/api.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/api.php" afterDir="false" /> <change beforePath="$PROJECT_DIR$/routes/api.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/api.php" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -295,11 +293,11 @@
</state> </state>
<state x="623" y="178" width="673" height="724" key="find.popup/0.0.1920.1080@0.0.1920.1080" timestamp="1580465329892" /> <state x="623" y="178" width="673" height="724" key="find.popup/0.0.1920.1080@0.0.1920.1080" timestamp="1580465329892" />
<state x="1903" y="197" width="673" height="708" key="find.popup/0.23.1280.777/1280.23.1920.1057@1280.23.1920.1057" timestamp="1579597123793" /> <state x="1903" y="197" width="673" height="708" key="find.popup/0.23.1280.777/1280.23.1920.1057@1280.23.1920.1057" timestamp="1579597123793" />
<state x="625" y="240" width="672" height="691" key="search.everywhere.popup" timestamp="1581075314755"> <state x="417" y="196" width="670" height="498" key="search.everywhere.popup" timestamp="1581148318017">
<screen x="0" y="0" width="1920" height="1080" /> <screen x="0" y="23" width="1280" height="777" />
</state> </state>
<state x="625" y="240" width="672" height="691" key="search.everywhere.popup/0.0.1920.1080@0.0.1920.1080" timestamp="1581075314755" /> <state x="625" y="240" width="672" height="691" key="search.everywhere.popup/0.0.1920.1080@0.0.1920.1080" timestamp="1581075314755" />
<state x="1905" y="258" width="670" height="676" key="search.everywhere.popup/0.23.1280.777/1280.23.1920.1057@1280.23.1920.1057" timestamp="1580196905378" /> <state x="1905" y="258" width="670" height="676" key="search.everywhere.popup/0.23.1280.777/1280.23.1920.1057@1280.23.1920.1057" timestamp="1580196905378" />
<state x="417" y="196" width="670" height="498" key="search.everywhere.popup/0.23.1280.777@0.23.1280.777" timestamp="1580972791234" /> <state x="417" y="196" width="670" height="498" key="search.everywhere.popup/0.23.1280.777@0.23.1280.777" timestamp="1581148318017" />
</component> </component>
</project> </project>

View file

@ -15,13 +15,22 @@ class FileController extends Controller
Log::info("Incoming UploadRequest"); Log::info("Incoming UploadRequest");
$uploadedFile=$request->image; $uploadedFile=$request->image;
$filename=$uploadedFile->storeAs('./testFolder',$uploadedFile->getClientOriginalName(),'images'); $folder=$request->folder;
$filename=$uploadedFile->storeAs('./'.$folder,$uploadedFile->getClientOriginalName(),'images');
return response(['status'=>'success','storedName'=>$filename],200); return response(['status'=>'success','storedName'=>$filename],200);
} }
public function getFolders(Request $request) { public function getFolders(Request $request) {
Log::info("Incoming getFolders request"); Log::info("Incoming getFolders request");
$folders=Folder::all();
$folderNames=array();
foreach ($folders as $folder) {
array_push($folderNames, $folder->name);
}
Log::info("Foldernames:");
Log::info($folderNames);
return response(['status'=>'success','folders'=>$folderNames],200);
} }
public function createFolder(Request $request) { public function createFolder(Request $request) {
@ -37,7 +46,7 @@ class FileController extends Controller
} }
public function deleteFile(Request $request) { public function deleteFile(Request $request) {
Log::info("Incoming deleteFilee request"); Log::info("Incoming deleteFile request");
} }
} }

View file

@ -391,7 +391,7 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterat
/*! no static exports found */ /*! no static exports found */
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! /mnt/d/repos/motorradig/motorradig/resources/js/Icon.js */"./resources/js/Icon.js"); module.exports = __webpack_require__(/*! /Users/tschneider/dev/repo/motorradig/motorradig/resources/js/Icon.js */"./resources/js/Icon.js");
/***/ }) /***/ })

View file

@ -2142,6 +2142,11 @@ __webpack_require__.r(__webpack_exports__);
// //
// //
// //
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({ /* harmony default export */ __webpack_exports__["default"] = ({
@ -2154,14 +2159,18 @@ __webpack_require__.r(__webpack_exports__);
editor: new tiptap__WEBPACK_IMPORTED_MODULE_0__["Editor"]({ editor: new tiptap__WEBPACK_IMPORTED_MODULE_0__["Editor"]({
extensions: [new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Blockquote"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["BulletList"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["CodeBlock"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["HardBreak"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Heading"]({ extensions: [new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Blockquote"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["BulletList"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["CodeBlock"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["HardBreak"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Heading"]({
levels: [1, 2, 3] levels: [1, 2, 3]
}), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["HorizontalRule"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["ListItem"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["OrderedList"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["TodoItem"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["TodoList"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Link"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Bold"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Code"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Italic"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Strike"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Underline"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["History"]()], }), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["HorizontalRule"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["ListItem"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["OrderedList"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["TodoItem"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["TodoList"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Link"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Bold"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Code"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Italic"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Strike"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Underline"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["History"]()]
content: this.$store.state.page_content }),
}) //folders: this.$store.state.folders
folders: ['Folder1', 'Folder2']
}; };
}, },
beforeDestroy: function beforeDestroy() { beforeDestroy: function beforeDestroy() {
this.editor.destroy(); this.editor.destroy();
}, },
created: function created() {
this.loadFolders();
},
methods: { methods: {
showContent: function showContent() { showContent: function showContent() {
console.log(">>"); //console.log(this.editor.view.dom.innerText); console.log(">>"); //console.log(this.editor.view.dom.innerText);
@ -2187,13 +2196,15 @@ __webpack_require__.r(__webpack_exports__);
_this.$router.push("/"); _this.$router.push("/");
}); });
}, },
onFileSelected: function onFileSelected(event) { uploadFile: function uploadFile(event) {
console.log("File changed:"); console.log("File changed:");
console.log(event.target.files[0].name); console.log(event.target.files[0].name);
var selectedFile = event.target.files[0]; var selectedFile = event.target.files[0];
var selectedFolder = this.$store.state.selectedFolder;
var formData = new FormData(); //formData.append('image',selectedFile,selectedFile.name); var formData = new FormData(); //formData.append('image',selectedFile,selectedFile.name);
formData.append('image', selectedFile); formData.append('image', selectedFile);
formData.append('folder', selectedFolder);
axios.post('http://localhost:8000/api/v1/auth/upload', formData, { axios.post('http://localhost:8000/api/v1/auth/upload', formData, {
headers: { headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token, 'Authorization': 'Bearer ' + this.$store.state.user_token,
@ -2214,8 +2225,28 @@ __webpack_require__.r(__webpack_exports__);
'Content-Type': 'multipart/form-data' 'Content-Type': 'multipart/form-data'
} }
}).then(function (res) { }).then(function (res) {
console.log(res); console.log(res.data);
loadFolders();
}); });
},
loadFolders: function loadFolders() {
var _this2 = this;
console.log("Requesting folders");
axios.post('http://localhost:8000/api/v1/auth/get_folders', {}, {
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token
}
}).then(function (res) {
console.log("Receiving folders");
console.log(res.data.folders);
_this2.$store.state.folders = res.data.folders;
});
},
newFolderSelected: function newFolderSelected(event) {
console.log("New Folder selected:");
console.log(event.target.value);
this.$store.state.selectedFolder = event.target.value;
} }
} }
}); });
@ -31692,7 +31723,7 @@ var render = function() {
_vm._v(" "), _vm._v(" "),
_c("input", { _c("input", {
attrs: { name: "filename", type: "file" }, attrs: { name: "filename", type: "file" },
on: { change: _vm.onFileSelected } on: { change: _vm.uploadFile }
}) })
]) ])
]), ]),
@ -31705,6 +31736,19 @@ var render = function() {
on: { change: _vm.createFolderRequest } on: { change: _vm.createFolderRequest }
}), }),
_c("button", [_vm._v("Neuen Ordner erzeugen")]) _c("button", [_vm._v("Neuen Ordner erzeugen")])
]),
_vm._v(" "),
_c("form", [
_c("label", [_vm._v("Ordner wählen:")]),
_vm._v(" "),
_c(
"select",
{ on: { change: _vm.newFolderSelected } },
_vm._l(this.$store.state.folders, function(folder) {
return _c("option", [_vm._v(_vm._s(folder))])
}),
0
)
]) ])
], ],
1 1
@ -48722,7 +48766,9 @@ var store = new vuex__WEBPACK_IMPORTED_MODULE_1__["default"].Store({
user_token: {}, user_token: {},
page_name: 'main', page_name: 'main',
page_content: '<h1 style="font-align:center;">Placeholder</h1>', page_content: '<h1 style="font-align:center;">Placeholder</h1>',
userlist: {} userlist: {},
folders: {},
selectedFolder: "default"
} }
}); });
@ -49160,8 +49206,8 @@ __webpack_require__.r(__webpack_exports__);
/*! no static exports found */ /*! no static exports found */
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! /mnt/d/repos/motorradig/motorradig/resources/js/app.js */"./resources/js/app.js"); __webpack_require__(/*! /Users/tschneider/dev/repo/motorradig/motorradig/resources/js/app.js */"./resources/js/app.js");
module.exports = __webpack_require__(/*! /mnt/d/repos/motorradig/motorradig/resources/sass/app.scss */"./resources/sass/app.scss"); module.exports = __webpack_require__(/*! /Users/tschneider/dev/repo/motorradig/motorradig/resources/sass/app.scss */"./resources/sass/app.scss");
/***/ }) /***/ })

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

View file

@ -8,6 +8,8 @@ export const store = new Vuex.Store({
user_token:{}, user_token:{},
page_name: 'main', page_name: 'main',
page_content:'<h1 style="font-align:center;">Placeholder</h1>', page_content:'<h1 style="font-align:center;">Placeholder</h1>',
userlist:{} userlist:{},
folders:{},
selectedFolder:"default"
} }
}); });

View file

@ -30,7 +30,7 @@
<div> <div>
<form> <form>
<span>UPLOAD:</span> <span>UPLOAD:</span>
<input name="filename" type="file" @change="onFileSelected"></input> <input name="filename" type="file" @change="uploadFile"></input>
</form> </form>
</div> </div>
@ -44,7 +44,12 @@
</div> </div>
<form>
<label>Ordner wählen:</label>
<select @change="newFolderSelected">
<option v-for="folder in this.$store.state.folders">{{ folder }}</option>
</select>
</form>
</div> </div>
</div> </div>
@ -98,14 +103,18 @@
new Strike(), new Strike(),
new Underline(), new Underline(),
new History(), new History(),
], ]
content: this.$store.state.page_content,
}), }),
//folders: this.$store.state.folders
folders: ['Folder1','Folder2']
} }
}, },
beforeDestroy() { beforeDestroy() {
this.editor.destroy() this.editor.destroy()
}, },
created() {
this.loadFolders();
},
methods: { methods: {
showContent() { showContent() {
@ -131,13 +140,15 @@
} }
) )
}, },
onFileSelected(event) { uploadFile(event) {
console.log("File changed:"); console.log("File changed:");
console.log(event.target.files[0].name); console.log(event.target.files[0].name);
var selectedFile=event.target.files[0]; var selectedFile=event.target.files[0];
var selectedFolder = this.$store.state.selectedFolder;
const formData = new FormData(); const formData = new FormData();
//formData.append('image',selectedFile,selectedFile.name); //formData.append('image',selectedFile,selectedFile.name);
formData.append('image',selectedFile); formData.append('image',selectedFile);
formData.append('folder',selectedFolder);
axios.post('http://localhost:8000/api/v1/auth/upload',formData,{ axios.post('http://localhost:8000/api/v1/auth/upload',formData,{
headers: { headers: {
@ -163,8 +174,27 @@
} }
}) })
.then(res=>{ .then(res=>{
console.log(res); console.log(res.data);
loadFolders();
}) })
},
loadFolders() {
console.log("Requesting folders");
axios.post('http://localhost:8000/api/v1/auth/get_folders',{},{
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token
}
})
.then(res=>{
console.log("Receiving folders");
console.log(res.data.folders);
this.$store.state.folders=res.data.folders;
})
},
newFolderSelected(event) {
console.log("New Folder selected:");
console.log(event.target.value);
this.$store.state.selectedFolder=event.target.value;
} }
} }
} }

View file

@ -53,6 +53,7 @@ Route::prefix('v1')->group(function () {
Route::post('create_folder','FileController@createFolder'); Route::post('create_folder','FileController@createFolder');
Route::post('get_folders','FileController@getFolders');
}); });
}); });
}); });