Как изменить URL-адрес загрузки с CakePHP? - PullRequest
0 голосов
/ 24 октября 2011

Я использую этот код для загрузки изображения. Этот код сохраняет загружаемые URL-адреса в таблицу базы данных, чтобы повторно определить URL-адрес, чтобы просмотреть загруженное изображение. Проблема состоит в том, чтобы изменить URL-адрес, сохраненный в базе данных, чтобы не изменять загрузку папка (сделайте короткий ulr для сохранения) вот так

от

img/dvds/sunset.jpg

до

dvds/sunset.jpg

это изменение, в котором я нуждаюсь, облегчает мне использование помощника image () ..

<?php
/**
 * App Controller
 *
 * file: /app/app_controller.php
 */
class AppController extends Controller {

    /**
     * slug()
     * creates a slug from a string
     */
    function slug($str) {
        // replace spaces with underscore, all to lowercase
        $str = strtolower(str_replace(' ', '_', $str));

        // create regex pattern
        $pattern = "/[^a-zA-Z0-9_]/";

        // replace non alphanumeric characters
        $str = preg_replace($pattern, '', $str);

    return $str;

}


    /**
     * uploads files to the server
     * @params:
     *      $folder     = the folder to upload the files e.g. 'img/files'
     *      $formdata   = the array containing the form files
     *      $itemId     = id of the item (optional) will create a new sub folder
     * @return:
     *      will return an array with the success of each file upload
     */
    function upload_files($folder, $formdata, $item_id = null) {
        // setup dir names absolute and relative
        $folder_url = WWW_ROOT.$folder;
        $rel_url = $folder;

        // create the folder if it does not exist
        if(!is_dir($folder_url)) {
            mkdir($folder_url);
        }

        // if itemId is set create an item folder
        if($item_id) {
            // set new absolute folder
            $folder_url = WWW_ROOT.$folder.'/'.$item_id;

            // set new relative folder
            $rel_url = $folder.'/'.$item_id;
            // create directory
            if(!is_dir($folder_url)) {
                mkdir($folder_url);

            }
        }

        // list of permitted file types, this is only images but documents can be added
        $permitted = array('image/gif','image/jpeg','image/pjpeg','image/png');

        // loop through and deal with the files
        foreach($formdata as $file) {
            // replace spaces with underscores
            $filename = str_replace(' ', '_', $file['name']);
            // assume filetype is false
            $typeOK = false;
            // check filetype is ok
            foreach($permitted as $type) {
                if($type == $file['type']) {
                    $typeOK = true;
                    break;
                }
            }

            // if file type ok upload the file
            if($typeOK) {
                // switch based on error code
                switch($file['error']) {
                    case 0:
                        // check filename already exists
                        if(!file_exists($folder_url.'/'.$filename)) {
                            // create full filename
                            $full_url = $folder_url.'/'.$filename;
                            $url = $rel_url.'/'.$filename;
                            // upload the file
                            $success = move_uploaded_file($file['tmp_name'], $url);
                        } else {
                            // create unique filename and upload file
                            ini_set('date.timezone', 'Europe/London');
                            $now = date('d-m-Y-His');
                            $full_url = $folder_url.'/'.$now.$filename;
                            $url = $rel_url.'/'.$now.' - '.$filename;
                            $success = move_uploaded_file($file['tmp_name'], $url);
                        }
                        // if upload was successful
                        if($success) {
                            // save the url of the file(i want to change this code)
                            $result['urls'][] = $url;
                        } else {
                            $result['errors'][] = "Error uploaded $filename. Please try again.";
                        }
                        break;
                    case 3:
                        // an error occured
                        $result['errors'][] = "Error uploading $filename. Please try again.";
                        break;
                    default:
                        // an error occured
                        $result['errors'][] = "System error uploading $filename. Contact webmaster.";
                        break;
                }
            } elseif($file['error'] == 4) {
                // no file was selected for upload
                $result['nofiles'][] = "No file Selected";
            } else {
                // unacceptable file type
                $result['errors'][] = "$filename cannot be uploaded. Acceptable file types: gif, jpg, png.";
            }
        }
    return $result;
    }

}
?>

1 Ответ

1 голос
/ 24 октября 2011

Не могли бы вы просто изменить

 $result['urls'][] = $url;

до

 $result['urls'][] = substr($url, 4);
...