Я хочу использовать Dropzone.js для хранения файлов на сервере, а также сохранить ссылку на файл в базе данных MySQL. Но я не могу найти способ вернуть ссылку на загруженные файлы.Dropzone.js - как работать с нормальной формой и отправлять в mysql
Как я могу это сделать?
Вот код:
<section id="home">
<form action="handler.php?user_id=<?php echo $user->data()->id; ?>" class="dropzone" id="my-dropzone">
<div class="fallback">
<input name="file" type="file" multiple id="up" />
</div>
</form>
</section>
<script>
Dropzone.options.myDropzone = {
addRemoveLinks: true,
init: function() {
thisDropzone = this;
$.get('handler.php?action=show', function(data) {
$.each(data, function(key,value){
var mockFile = { name: value.name, size: value.link};
thisDropzone.options.thumbnail.call(thisDropzone, mockFile, "uploads/<?php echo $user->data()->id; ?>/"+value.name);
});
});
thisDropzone.on('removedfile', function(file){
$.get('handler.php?action=remove&name='+file.name+'&user_id=<?php echo $user->data()->id; ?>');
});
}
}
</script>
handler.php:
<?php
define('DS',DIRECTORY_SEPARATOR);
define('DES','uploads');
$action = "upload";
if (isset($_GET['action'])) {
$action = $_GET['action'];
}
//routing for different tasks
switch($action) {
case 'upload':
if (!empty($_FILES)) {
storeFile($_FILES, $_GET['user_id']);
}
break;
case 'remove':
$filename = $_GET['name'];
removeFile($filename, $_GET['user_id']);
break;
case 'show':
showFiles();
break;
}
function storeFile($file, $user_id) {
$tempFile = $file['file']['tmp_name'];
//file extensions allowed
$allowedExt = array('gif', 'jpg');
//file size allowed in kb
$allowedMaxSize = 10240;
//file extension validation
if (count($allowedExt) >0) {
$fileExt = pathinfo($file['file']['name'],PATHINFO_EXTENSION);
if (!in_array($fileExt, $allowedExt)) {
header("HTTP/1.0 500 Internal Server Error");
echo 'Invalid file extension';
exit();
}
}
//file size validation
if ((filesize($tempFile)/1024)> $allowedMaxSize) {
header("HTTP/1.0 500 Internal Server Error");
echo 'File exceeds maximum allowed size';
exit();
}
//move file to server
$targetPath = dirname(__FILE__) . DS . DES . DS . $user_id;
if (!is_dir($targetPath)) {
mkdir($targetPath);
}
$targetFile = $targetPath . DS . $file['file']['name'];
if (!move_uploaded_file($tempFile,$targetFile)) {
header("HTTP/1.0 500 Internal Server Error Not Found");
echo 'Unknown server error';
exit();
}
}
function showFiles() {
$result = array();
$files = scandir(DES);
if (false!==$files) {
foreach ($files as $file) {
//ignore current and parent folder indicator
if ('.'!=$file && '..'!=$file) {
$obj['name'] = $file;
$obj['size'] = filesize(DES.DS.$file);
$result[] = $obj;
}
}
}
header('Content-type: text/json');
header('Content-type: application/json');
echo json_encode($result);
}
function removeFile($fileName, $user_id) {
$targetPath = dirname(__FILE__) . DS . DES . DS . $user_id . DS;
$targetFile = $targetPath . $fileName;
//remove only when file exists
if (file_exists($targetFile)) {
unlink($targetFile);
}
}
?>