Files
crmPRO/libraries/grid/upload.php
2024-11-10 11:11:35 +01:00

71 lines
2.3 KiB
PHP

<?php
require_once dirname( __FILE__ ) . '/config.php';
$grid = $_SESSION[ 'g-upload-' . $_POST[ 'gtable' ] ];
if ( is_a( $grid, 'gridUpload' ) )
{
if ( $grid -> dir_upload === null )
{
$response = [ 'status' => 'error', 'msg' => 'Proszę zdefiniować ściężkę do wysłania pliku.' ];
echo json_encode( $response );
exit;
}
if ( !empty( $_FILES["file"] ) )
{
if ( $_FILES["file"]["error"] > 0 )
{
$response = [ 'status' => 'error' ];
}
else
{
$file_dir = $grid -> dir_upload;
$dir_abs = $grid -> dir_upload_abs . $grid -> dir_upload;
if ( !is_dir( $dir_abs ) )
mkdir( $dir_abs, 0777, true );
$file_name = pathinfo( $_FILES['file']['name'], PATHINFO_FILENAME );
$file_ext = pathinfo( $_FILES['file']['name'], PATHINFO_EXTENSION );
if ( !in_array( $file_ext, $grid -> allowed_extensions ) )
{
$response = [ 'status' => 'error', 'msg' => 'Nieprawidłowe rozszerzenie pliku. Dozwolone rozszerzenia: <b>' . implode( ', ', $grid -> allowed_extensions ) . '</b>.' ];
echo json_encode( $response );
exit;
}
$response = [ 'status' => 'error', 'msg' => $file_name ];
while ( file_exists( $dir_abs . DIRECTORY_SEPARATOR . $file_name . $count . '.' . $file_ext ) )
$count++;
$file_name = $file_name . $count . '.' . $file_ext;
move_uploaded_file( $_FILES["file"]["tmp_name"], $dir_abs . DIRECTORY_SEPARATOR . $file_name );
if ( $grid -> db !== null )
{
if ( is_array( $_POST ) ) foreach ( $_POST as $key => $val )
{
if ( $key != 'gtable' )
$columns[ $key ] = $val;
}
$columns[ $grid -> db['file_column'] ] = $file_dir . DIRECTORY_SEPARATOR . $file_name;
if ( $file_id = $grid -> connectToDb() -> insert( $grid -> db['table'] , $columns ) )
{
$columns[ 'id' ] = $file_id;
$response = [ 'status' => 'ok', 'file' => $columns ];
}
}
else
$response = [ 'status' => 'ok', 'file' => [ 'src' => $file_dir . DIRECTORY_SEPARATOR . $file_name ] ];
}
}
else
$response = [ 'status' => 'error', 'msg' => 'Niewybrano pliku lub plik jest zbyt duży.' ];
echo json_encode( $response );
exit;
}