当前位置: 首页>>代码示例>>PHP>>正文


PHP General::uploadFile方法代码示例

本文整理汇总了PHP中General::uploadFile方法的典型用法代码示例。如果您正苦于以下问题:PHP General::uploadFile方法的具体用法?PHP General::uploadFile怎么用?PHP General::uploadFile使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在General的用法示例。


在下文中一共展示了General::uploadFile方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: __actionUpload

 private function __actionUpload()
 {
     $FileManager =& $this->_Parent->ExtensionManager->create('filemanager');
     $file = General::processFilePostData($_FILES['fields']);
     $file = $file['upload']['file'];
     $context = $this->_context;
     array_shift($context);
     $dest_path = DOCROOT . $FileManager->getStartLocation() . (is_array($context) && !empty($context) ? '/' . implode('/', $context) . '/' : NULL);
     /*
     	Array
     	(
     	    [0] => KnuckleboneWitch.jpg
     	    [1] => image/jpeg
     	    [2] => /Applications/MAMP/tmp/php/phpYCREds
     	    [3] => 0
     	    [4] => 25854
     	)
     */
     $permission = $_POST['fields']['upload']['permissions'];
     return General::uploadFile($dest_path, $file[0], $file[2], $permission);
 }
开发者ID:andrrr,项目名称:filemanager,代码行数:21,代码来源:content.new.php

示例2: processRawFieldData

 function processRawFieldData($data, &$status, $simulate = false, $entry_id = NULL)
 {
     $status = self::__OK__;
     ## Its not an array, so just retain the current data and return
     if (!is_array($data)) {
         $status = self::__OK__;
         // Do a simple reconstruction of the file meta information. This is a workaround for
         // bug which causes all meta information to be dropped
         return array('file' => $data, 'mimetype' => self::__sniffMIMEType($data), 'size' => filesize(WORKSPACE . $data), 'meta' => serialize(self::getMetaInfo(WORKSPACE . $data, self::__sniffMIMEType($data))));
     }
     if ($simulate) {
         return;
     }
     if ($data['error'] == UPLOAD_ERR_NO_FILE || $data['error'] != UPLOAD_ERR_OK) {
         return;
     }
     ## Sanitize the filename
     $data['name'] = Lang::createFilename($data['name']);
     ## Upload the new file
     $abs_path = DOCROOT . '/' . trim($this->get('destination'), '/');
     $rel_path = str_replace('/workspace', '', $this->get('destination'));
     if (!General::uploadFile($abs_path, $data['name'], $data['tmp_name'], $this->_engine->Configuration->get('write_mode', 'file'))) {
         $message = __('There was an error while trying to upload the file <code>%1$s</code> to the target directory <code>%2$s</code>.', array($data['name'], 'workspace/' . $rel_path));
         $status = self::__ERROR_CUSTOM__;
         return;
     }
     if ($entry_id) {
         $row = $this->Database->fetchRow(0, "SELECT * FROM `tbl_entries_data_" . $this->get('id') . "` WHERE `entry_id` = '{$entry_id}' LIMIT 1");
         $existing_file = $abs_path . '/' . basename($row['file']);
         General::deleteFile($existing_file);
     }
     $status = self::__OK__;
     $file = rtrim($rel_path, '/') . '/' . trim($data['name'], '/');
     return array('file' => $file, 'size' => $data['size'], 'mimetype' => $data['type'], 'meta' => serialize(self::getMetaInfo(WORKSPACE . $file, $data['type'])));
 }
开发者ID:bauhouse,项目名称:sym-fluid960gs,代码行数:35,代码来源:field.upload.php

示例3: processRawFieldData

 public function processRawFieldData($data, &$status, $simulate = false, $entry_id = NULL)
 {
     $status = self::__OK__;
     //fixes bug where files are deleted, but their database entries are not.
     if ($data === NULL) {
         return array('file' => NULL, 'mimetype' => NULL, 'size' => NULL, 'meta' => NULL);
     }
     // Its not an array, so just retain the current data and return
     if (!is_array($data)) {
         $status = self::__OK__;
         // Ensure the file exists in the `WORKSPACE` directory
         // @link http://symphony-cms.com/discuss/issues/view/610/
         $file = WORKSPACE . preg_replace(array('%/+%', '%(^|/)\\.\\./%'), '/', $data);
         $result = array('file' => $data, 'mimetype' => NULL, 'size' => NULL, 'meta' => NULL);
         // Grab the existing entry data to preserve the MIME type and size information
         if (isset($entry_id) && !is_null($entry_id)) {
             $row = Symphony::Database()->fetchRow(0, sprintf("SELECT `file`, `mimetype`, `size`, `meta` FROM `tbl_entries_data_%d` WHERE `entry_id` = %d", $this->get('id'), $entry_id));
             if (!empty($row)) {
                 $result = $row;
             }
         }
         if (!file_exists($file) || !is_readable($file)) {
             $status = self::__INVALID_FIELDS__;
             return $result;
         } else {
             if (empty($result['mimetype'])) {
                 $result['mimetype'] = function_exists('mime_content_type') ? mime_content_type($file) : 'application/octet-stream';
             }
             if (empty($result['size'])) {
                 $result['size'] = filesize($file);
             }
             if (empty($result['meta'])) {
                 $result['meta'] = serialize(self::getMetaInfo($file, $result['mimetype']));
             }
         }
         return $result;
     }
     if ($simulate && is_null($entry_id)) {
         return $data;
     }
     // Upload the new file
     $abs_path = DOCROOT . '/' . trim($this->get('destination'), '/');
     $rel_path = str_replace('/workspace', '', $this->get('destination'));
     $existing_file = NULL;
     if (!is_null($entry_id)) {
         $row = Symphony::Database()->fetchRow(0, sprintf("SELECT * FROM `tbl_entries_data_%s` WHERE `entry_id` = %d LIMIT 1", $this->get('id'), $entry_id));
         $existing_file = '/' . trim($row['file'], '/');
         // File was removed
         if ($data['error'] == UPLOAD_ERR_NO_FILE && !is_null($existing_file) && is_file(WORKSPACE . $existing_file)) {
             General::deleteFile(WORKSPACE . $existing_file);
         }
     }
     if ($data['error'] == UPLOAD_ERR_NO_FILE || $data['error'] != UPLOAD_ERR_OK) {
         return;
     }
     // Sanitize the filename
     $data['name'] = Lang::createFilename($data['name']);
     if (!General::uploadFile($abs_path, $data['name'], $data['tmp_name'], Symphony::Configuration()->get('write_mode', 'file'))) {
         $message = __('There was an error while trying to upload the file <code>%1$s</code> to the target directory <code>%2$s</code>.', array($data['name'], 'workspace/' . ltrim($rel_path, '/')));
         $status = self::__ERROR_CUSTOM__;
         return;
     }
     $status = self::__OK__;
     $file = rtrim($rel_path, '/') . '/' . trim($data['name'], '/');
     // File has been replaced
     if (!is_null($existing_file) && strtolower($existing_file) != strtolower($file) && is_file(WORKSPACE . $existing_file)) {
         General::deleteFile(WORKSPACE . $existing_file);
     }
     // If browser doesn't send MIME type (e.g. .flv in Safari)
     if (strlen(trim($data['type'])) == 0) {
         $data['type'] = function_exists('mime_content_type') ? mime_content_type($file) : 'application/octet-stream';
     }
     return array('file' => $file, 'size' => $data['size'], 'mimetype' => $data['type'], 'meta' => serialize(self::getMetaInfo(WORKSPACE . $file, $data['type'])));
 }
开发者ID:benesch,项目名称:hilton-unar,代码行数:74,代码来源:field.upload.php

示例4: beginProcess

 /**
  * Uploads the zip file to a target directory using the current date. The function
  * then extracts the content of the zip to the same folder, removes the zip file
  * after extraction and calls the openExtracted function to append the files to the
  * $files array.
  *
  * @return boolean
  *	True if the $files array is not empty, false otherwise
  */
 public function beginProcess()
 {
     if (empty($_FILES['fields']['name']['file'])) {
         return false;
     }
     $target = $this->getTarget() . DateTimeObj::get('d-m-Y');
     foreach ($_FILES['fields']['error'] as $key => $error) {
         if ($error == UPLOAD_ERR_OK) {
             $tmp = $_FILES['fields']['tmp_name'][$key];
             // Upload files to /workspace/uploads/bulkimporter/11-11-2010
             $file = $_FILES['fields']['name'][$key];
             if (!file_exists($target)) {
                 General::realiseDirectory($target);
             }
             if (!General::uploadFile($target, $file, $tmp)) {
                 return false;
             }
             $uploadedZipPath = $target . "/" . $file;
         }
     }
     $zipManager = new ZipArchive();
     $zip = $zipManager->open($uploadedZipPath);
     // The directory where the extracted zip contents should go to.
     $this->extracted_directory = $target;
     $path = '';
     if ($this->archive_is_parent) {
         $path = '/' . preg_replace('/\\.[^\\.]+$/', '', basename($uploadedZipPath));
         $this->extracted_archive = basename($path);
         if (!file_exists($this->extracted_directory . $path)) {
             General::realiseDirectory($this->extracted_directory . $path);
         }
     }
     $zipManager->extractTo($this->extracted_directory . $path);
     $zipManager->close();
     // Delete the zip file
     General::deleteFile($uploadedZipPath);
     // Add the extracted files to the $files array
     $this->openExtracted($this->extracted_directory);
     return count($this->files) != 0;
 }
开发者ID:brendo,项目名称:bulkimporter,代码行数:49,代码来源:extension.driver.php

示例5: processRawFieldData

 public function processRawFieldData($data, &$status, &$message = null, $simulate = false, $entry_id = null)
 {
     $status = self::__OK__;
     // No file given, save empty data:
     if ($data === null) {
         return array('file' => null, 'mimetype' => null, 'size' => null, 'meta' => null);
     }
     // Its not an array, so just retain the current data and return:
     if (is_array($data) === false) {
         $file = $this->getFilePath(basename($data));
         $result = array('file' => $data, 'mimetype' => null, 'size' => null, 'meta' => null);
         // Grab the existing entry data to preserve the MIME type and size information
         if (isset($entry_id)) {
             $row = Symphony::Database()->fetchRow(0, sprintf("SELECT `file`, `mimetype`, `size`, `meta` FROM `tbl_entries_data_%d` WHERE `entry_id` = %d", $this->get('id'), $entry_id));
             if (empty($row) === false) {
                 $result = $row;
             }
         }
         // Found the file, add any missing meta information:
         if (file_exists($file) && is_readable($file)) {
             if (empty($result['mimetype'])) {
                 $result['mimetype'] = General::getMimeType($file);
             }
             if (empty($result['size'])) {
                 $result['size'] = filesize($file);
             }
             if (empty($result['meta'])) {
                 $result['meta'] = serialize(self::getMetaInfo($file, $result['mimetype']));
             }
             // The file was not found, or is unreadable:
         } else {
             $message = __('The file uploaded is no longer available. Please check that it exists, and is readable.');
             $status = self::__INVALID_FIELDS__;
         }
         return $result;
     }
     if ($simulate && is_null($entry_id)) {
         return $data;
     }
     // Check to see if the entry already has a file associated with it:
     if (is_null($entry_id) === false) {
         $row = Symphony::Database()->fetchRow(0, sprintf("SELECT *\n                FROM `tbl_entries_data_%s`\n                WHERE `entry_id` = %d\n                LIMIT 1", $this->get('id'), $entry_id));
         $existing_file = isset($row['file']) ? $this->getFilePath($row['file']) : null;
         // File was removed:
         if ($data['error'] == UPLOAD_ERR_NO_FILE && !is_null($existing_file) && is_file($existing_file)) {
             General::deleteFile($existing_file);
         }
     }
     // Do not continue on upload error:
     if ($data['error'] == UPLOAD_ERR_NO_FILE || $data['error'] != UPLOAD_ERR_OK) {
         return false;
     }
     // Where to upload the new file?
     $abs_path = DOCROOT . '/' . trim($this->get('destination'), '/');
     $rel_path = str_replace('/workspace', '', $this->get('destination'));
     // Sanitize the filename
     $data['name'] = Lang::createFilename($data['name']);
     // If a file already exists, then rename the file being uploaded by
     // adding `_1` to the filename. If `_1` already exists, the logic
     // will keep adding 1 until a filename is available (#672)
     if (file_exists($abs_path . '/' . $data['name'])) {
         $extension = General::getExtension($data['name']);
         $new_file = substr($abs_path . '/' . $data['name'], 0, -1 - strlen($extension));
         $renamed_file = $new_file;
         $count = 1;
         do {
             $renamed_file = $new_file . '_' . $count . '.' . $extension;
             $count++;
         } while (file_exists($renamed_file));
         // Extract the name filename from `$renamed_file`.
         $data['name'] = str_replace($abs_path . '/', '', $renamed_file);
     }
     $file = $this->getFilePath($data['name']);
     // Attempt to upload the file:
     $uploaded = General::uploadFile($abs_path, $data['name'], $data['tmp_name'], Symphony::Configuration()->get('write_mode', 'file'));
     if ($uploaded === false) {
         $message = __('There was an error while trying to upload the file %1$s to the target directory %2$s.', array('<code>' . $data['name'] . '</code>', '<code>workspace/' . ltrim($rel_path, '/') . '</code>'));
         $status = self::__ERROR_CUSTOM__;
         return false;
     }
     // File has been replaced:
     if (isset($existing_file) && $existing_file !== $file && is_file($existing_file)) {
         General::deleteFile($existing_file);
     }
     // Get the mimetype, don't trust the browser. RE: #1609
     $data['type'] = General::getMimeType($file);
     return array('file' => basename($file), 'size' => $data['size'], 'mimetype' => $data['type'], 'meta' => serialize(self::getMetaInfo($file, $data['type'])));
 }
开发者ID:valery,项目名称:symphony-2,代码行数:88,代码来源:field.upload.php

示例6: saveData

 public function saveData(MessageStack $errors, Entry $entry, $data = null)
 {
     $permissions = Symphony::Configuration()->core()->symphony->{'file-write-mode'};
     $data->entry_id = $entry->id;
     ###
     # Delegate: UploadField_PreUploadFile
     # Description: Allow extensions to manipulate saved data before the file is saved to disk.
     Extension::notify('UploadField_PreUploadFile', '/publish/', array('data' => $data, 'field' => $this, 'entry' => $entry));
     $file = DOCROOT . '/' . $data->path . '/' . $data->file;
     // Upload the file:
     if ($data->tmp_name and $data->error == 0) {
         if (!General::uploadFile(DOCROOT . '/' . $data->path, $data->file, $data->tmp_name, $permissions)) {
             $errors->append(null, (object) array('message' => __('There was an error while trying to upload the file <code>%s</code> to the target directory <code>%s</code>.', array($data->name, trim($data->path, '/'))), 'code' => self::ERROR_INVALID));
             return self::STATUS_ERROR;
         }
         // Remove file being replaced:
         if (isset($data->existing) and is_file($data->existing)) {
             $this->cleanupData($entry, $data, $data->existing);
         }
     }
     unset($data->existing);
     unset($data->error);
     unset($data->tmp_name);
     ###
     # Delegate: UploadField_PostUploadFile
     # Description: Allow extensions to manipulate saved data after the file is saved to disk.
     Extension::notify('UploadField_PostUploadFile', '/publish/', array('data' => $data, 'field' => $this, 'entry' => $entry));
     try {
         $data->meta = serialize($data->meta);
         Symphony::Database()->insert(sprintf('tbl_data_%s_%s', $entry->section, $this->{'element-name'}), (array) $data, Database::UPDATE_ON_DUPLICATE);
         return self::STATUS_OK;
     } catch (Exception $e) {
         $errors->append(null, (object) array('message' => __('There was an error while trying to upload the file <code>%s</code> to the target directory <code>workspace/%s</code>.', array($data->name, $path)), 'code' => self::ERROR_INVALID));
     }
     // Remove uploaded file:
     if (isset($file) and is_file($file)) {
         $this->cleanupData($entry, $data, $file);
     }
     return self::STATUS_ERROR;
 }
开发者ID:pointybeard,项目名称:symphony-3,代码行数:40,代码来源:field.upload.php

示例7: processRawFieldData

 public function processRawFieldData($data, &$status, $simulate = false, $entry_id = null)
 {
     $status = self::__OK__;
     // Recal existing data:
     $existing = Symphony::Database()->fetchRow(0, sprintf("\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\tf.name,\n\t\t\t\t\t\t\tf.file,\n\t\t\t\t\t\t\tf.size,\n\t\t\t\t\t\t\tf.mimetype,\n\t\t\t\t\t\t\tf.meta\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t`tbl_entries_data_%s` AS f\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tf.entry_id = '%s'\n\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t", $this->get('id'), $entry_id));
     if ($simulate && is_null($entry_id)) {
         return $data;
     }
     // No file sent, cleanup existing:
     if (is_null($data) or $data == '' or isset($data['error']) and $data['error'] != UPLOAD_ERR_OK) {
         if (isset($existing['file']) and is_file(WORKSPACE . $existing['file'])) {
             General::deleteFile(WORKSPACE . $existing['file']);
         }
         return;
     }
     // Accept a path:
     if (is_string($data)) {
         // Existing data found:
         if (is_array($existing) and $existing['file'] == $data) {
             return $existing;
         } else {
             if (is_file(WORKSPACE . '/' . $data)) {
                 return array('name' => basename($data), 'file' => $data, 'mimetype' => $this->getMimeType($data), 'size' => filesize(WORKSPACE . '/' . $data), 'meta' => serialize($this->getMetaInfo(WORKSPACE . $data, $this->getMimeType($data))));
             }
         }
     }
     $path = rtrim(preg_replace('%^/workspace%', '', $this->get('destination')), '/');
     $name = $data['name'];
     // Sanitize the filename:
     if ($this->get('serialise') == 'yes') {
         $data['name'] = $this->getHashedFilename($data['name']);
     }
     if (!General::uploadFile(DOCROOT . '/' . trim($this->get('destination'), '/'), $data['name'], $data['tmp_name'], $this->Symphony->Configuration->get('write_mode', 'file'))) {
         $message = __('There was an error while trying to upload the file <code>%s</code> to the target directory <code>workspace/%s</code>.', array($data['name'], $path));
         $status = self::__ERROR_CUSTOM__;
         return;
     }
     // Remove file being replaced:
     if (isset($existing['file']) and is_file(WORKSPACE . $existing['file'])) {
         General::deleteFile(WORKSPACE . $existing['file']);
     }
     $data = array('name' => $name, 'file' => $path . '/' . trim($data['name'], '/'), 'size' => $data['size'], 'mimetype' => $data['type'], 'meta' => serialize($this->getMetaInfo(WORKSPACE . $file, $data['type'])));
     ###
     # Delegate: UploadField_PostProccessFile
     # Description: Allow other extensions to add media previews.
     $this->Symphony->ExtensionManager->notifyMembers('UploadField_PostProccessFile', '/publish/', array('data' => $data, 'entry_id' => $entry_id, 'field_id' => $this->get('id')));
     return $data;
 }
开发者ID:psychoticmeowArchives,项目名称:uploadfield,代码行数:48,代码来源:field.upload.php

示例8: processRawFieldData

 public function processRawFieldData($data, &$status, &$message = null, $simulate = false, $entry_id = NULL)
 {
     $status = self::__OK__;
     //fixes bug where files are deleted, but their database entries are not.
     if ($data === NULL) {
         return array('file' => NULL, 'mimetype' => NULL, 'size' => NULL, 'meta' => NULL);
     }
     // It's not an array, so just retain the current data and return
     if (!is_array($data)) {
         // Ensure the file exists in the `WORKSPACE` directory
         // @link http://symphony-cms.com/discuss/issues/view/610/
         $file = WORKSPACE . preg_replace(array('%/+%', '%(^|/)\\.\\./%'), '/', $data);
         $result = array('file' => $data, 'mimetype' => NULL, 'size' => NULL, 'meta' => NULL);
         // Grab the existing entry data to preserve the MIME type and size information
         if (isset($entry_id) && !is_null($entry_id)) {
             $row = Symphony::Database()->fetchRow(0, sprintf("SELECT `file`, `mimetype`, `size`, `meta` FROM `tbl_entries_data_%d` WHERE `entry_id` = %d", $this->get('id'), $entry_id));
             if (!empty($row)) {
                 $result = $row;
             }
         }
         if (!file_exists($file) || !is_readable($file)) {
             $message = __('The file uploaded is no longer available. Please check that it exists, and is readable.');
             $status = self::__INVALID_FIELDS__;
             return $result;
         } else {
             if (empty($result['mimetype'])) {
                 $result['mimetype'] = function_exists('mime_content_type') ? mime_content_type($file) : 'application/octet-stream';
             }
             if (empty($result['size'])) {
                 $result['size'] = filesize($file);
             }
             if (empty($result['meta'])) {
                 $result['meta'] = serialize(self::getMetaInfo($file, $result['mimetype']));
             }
         }
         return $result;
     }
     if ($simulate && is_null($entry_id)) {
         return $data;
     }
     //My special Select box alteration :P
     //var_dump($_POST['fields']['enhanced_upload_field'][$this->get('element_name')]['directory'],$_POST);die;
     //var_dump($_POST);
     // Upload the new file
     $override_path = $this->get('override') == 'yes' ? $_POST['fields']['enhanced_upload_field'][$this->get('element_name')]['directory'] : trim($this->get('destination'));
     $abs_path = DOCROOT . $override_path . '/';
     $rel_path = str_replace('/workspace', '', $override_path);
     $existing_file = NULL;
     if (!is_null($entry_id)) {
         $row = Symphony::Database()->fetchRow(0, sprintf("SELECT * FROM `tbl_entries_data_%s` WHERE `entry_id` = %d LIMIT 1", $this->get('id'), $entry_id));
         $existing_file = '/' . trim($row['file'], '/');
         // File was removed
         if ($data['error'] == UPLOAD_ERR_NO_FILE && !is_null($existing_file) && is_file(WORKSPACE . $existing_file)) {
             General::deleteFile(WORKSPACE . $existing_file);
         }
     }
     if ($data['error'] == UPLOAD_ERR_NO_FILE || $data['error'] != UPLOAD_ERR_OK) {
         return false;
     }
     // If a file already exists, then rename the file being uploaded by
     // adding `_1` to the filename. If `_1` already exists, the logic
     // will keep adding 1 until a filename is available (#672)
     $new_file = $abs_path . '/' . $data['name'];
     if (file_exists($new_file)) {
         $i = 1;
         $extension = General::getExtension($data['name']);
         $renamed_file = $new_file;
         do {
             $renamed_file = General::left($new_file, -strlen($extension) - 1) . '_' . $i . '.' . $extension;
             $i++;
         } while (file_exists($renamed_file));
         // Extract the name filename from `$renamed_file`.
         $data['name'] = str_replace($abs_path . '/', '', $renamed_file);
     }
     // Sanitize the filename
     $data['name'] = Lang::createFilename($data['name']);
     // Actually upload the file, moving it from PHP's temporary store to the desired destination
     if (!General::uploadFile($abs_path, $data['name'], $data['tmp_name'], Symphony::Configuration()->get('write_mode', 'file'))) {
         $message = __('There was an error while trying to upload the file %1$s to the target directory %2$s.', array('<code>' . $data['name'] . '</code>', '<code>workspace/' . ltrim($rel_path, '/') . '</code>'));
         $status = self::__ERROR_CUSTOM__;
         return false;
     }
     $file = rtrim($rel_path, '/') . '/' . trim($data['name'], '/');
     // File has been replaced
     if (!is_null($existing_file) && strtolower($existing_file) != strtolower($file) && is_file(WORKSPACE . $existing_file)) {
         General::deleteFile(WORKSPACE . $existing_file);
     }
     // If browser doesn't send MIME type (e.g. .flv in Safari)
     if (strlen(trim($data['type'])) == 0) {
         $data['type'] = function_exists('mime_content_type') ? mime_content_type($file) : 'application/octet-stream';
     }
     //var_dump($_POST);
     return array('file' => $file, 'size' => $data['size'], 'mimetype' => $data['type'], 'meta' => serialize(self::getMetaInfo(WORKSPACE . $file, $data['type'])));
 }
开发者ID:nitriques,项目名称:enhanced_upload_field,代码行数:94,代码来源:field.enhanced_upload.php

示例9: processRawFieldData

 public function processRawFieldData($data, &$status, $simulate = false, $entry_id = NULL)
 {
     $status = self::__OK__;
     ## Its not an array, so just retain the current data and return
     if (!is_array($data)) {
         $status = self::__OK__;
         $file = WORKSPACE . $data;
         // Do a simple reconstruction of the file meta information. This is a workaround for
         // bug which causes all meta information to be dropped
         return array('file' => $data, 'mimetype' => self::__sniffMIMEType($data), 'size' => file_exists($file) && is_readable($file) ? filesize($file) : NULL, 'meta' => serialize(self::getMetaInfo(WORKSPACE . $data, self::__sniffMIMEType($data))));
     }
     if ($simulate) {
         return;
     }
     ## Upload the new file
     $abs_path = DOCROOT . '/' . trim($this->get('destination'), '/');
     $rel_path = str_replace('/workspace', '', $this->get('destination'));
     $existing_file = NULL;
     if (!is_null($entry_id)) {
         $row = Symphony::Database()->fetchRow(0, sprintf("SELECT * FROM `tbl_entries_data_%s` WHERE `entry_id` = %d LIMIT 1", $this->get('id'), $entry_id));
         $existing_file = rtrim($rel_path, '/') . '/' . trim(basename($row['file']), '/');
         // File was removed
         if ($data['error'] == UPLOAD_ERR_NO_FILE && !is_null($existing_file) && file_exists(WORKSPACE . $existing_file)) {
             General::deleteFile(WORKSPACE . $existing_file);
         }
     }
     if ($data['error'] == UPLOAD_ERR_NO_FILE || $data['error'] != UPLOAD_ERR_OK) {
         return;
     }
     ## Sanitize the filename
     $data['name'] = Lang::createFilename($data['name']);
     if (!General::uploadFile($abs_path, $data['name'], $data['tmp_name'], Symphony::Configuration()->get('write_mode', 'file'))) {
         $message = __('There was an error while trying to upload the file <code>%1$s</code> to the target directory <code>%2$s</code>.', array($data['name'], 'workspace/' . ltrim($rel_path, '/')));
         $status = self::__ERROR_CUSTOM__;
         return;
     }
     $status = self::__OK__;
     $file = rtrim($rel_path, '/') . '/' . trim($data['name'], '/');
     // File has been replaced
     if (!is_null($existing_file) && strtolower($existing_file) != strtolower($file) && file_exists(WORKSPACE . $existing_file)) {
         General::deleteFile(WORKSPACE . $existing_file);
     }
     ## If browser doesn't send MIME type (e.g. .flv in Safari)
     if (strlen(trim($data['type'])) == 0) {
         $data['type'] = 'unknown';
     }
     return array('file' => $file, 'size' => $data['size'], 'mimetype' => $data['type'], 'meta' => serialize(self::getMetaInfo(WORKSPACE . $file, $data['type'])));
 }
开发者ID:bauhouse,项目名称:sym-forum,代码行数:48,代码来源:field.upload.php

示例10: processRawFieldData

 public function processRawFieldData($data, &$status, $simulate = false, $entry_id = NULL)
 {
     $status = self::__OK__;
     ## Its not an array, so just retain the current data and return
     if (!is_array($data)) {
         $status = self::__OK__;
         $file = WORKSPACE . $data;
         $result = array('file' => $data, 'mimetype' => NULL, 'size' => NULL, 'meta' => NULL);
         // Grab the existing entry data to preserve the MIME type and size information
         if (isset($entry_id) && !is_null($entry_id)) {
             $row = Symphony::Database()->fetchRow(0, sprintf("SELECT `file`, `mimetype`, `size`, `meta` FROM `tbl_entries_data_%d` WHERE `entry_id` = %d", $this->get('id'), $entry_id));
             if (!empty($row)) {
                 $result = $row;
             }
         }
         if (!file_exists($file) || !is_readable($file)) {
             $status = self::__INVALID_FIELDS__;
             return $result;
         }
         return $result;
     }
     if ($simulate) {
         return;
     }
     if (is_array($data) and isset($data['name'])) {
         $data['name'] = $this->getUniqueFilename($data['name']);
     }
     ## Upload the new file
     $abs_path = DOCROOT . '/' . trim($this->get('destination'), '/');
     $rel_path = str_replace('/workspace', '', $this->get('destination'));
     $existing_file = NULL;
     if (!is_null($entry_id)) {
         $row = Symphony::Database()->fetchRow(0, sprintf("SELECT * FROM `tbl_entries_data_%s` WHERE `entry_id` = %d LIMIT 1", $this->get('id'), $entry_id));
         $existing_file = rtrim($rel_path, '/') . '/' . trim(basename($row['file']), '/');
         // File was removed
         if ($data['error'] == UPLOAD_ERR_NO_FILE && !is_null($existing_file) && file_exists(WORKSPACE . $existing_file)) {
             General::deleteFile(WORKSPACE . $existing_file);
         }
     }
     if ($data['error'] == UPLOAD_ERR_NO_FILE || $data['error'] != UPLOAD_ERR_OK) {
         return;
     }
     ## Sanitize the filename
     $data['name'] = Lang::createFilename($data['name']);
     // Do any pre-processing
     $meta = Image::getMetaInformation($data['tmp_name']);
     if ($this->get('resize_long_edge_dimension') != NULL and $meta->width > $this->get('resize_long_edge_dimension') || $meta->height > $this->get('resize_long_edge_dimension')) {
         try {
             $image = Image::load($data['tmp_name']);
             $dest_width = $dest_height = NULL;
             if ($image->Meta()->width > $image->Meta()->height) {
                 $dest_width = $this->get('resize_long_edge_dimension');
             } else {
                 $dest_height = $this->get('resize_long_edge_dimension');
             }
             $image->applyFilter('resize', array($dest_width, $dest_height));
             $image->save($abs_path . '/' . $data['name'], 100);
         } catch (Exception $e) {
             $message = __('There was an error while trying to pre-process the file <code>%s</code>: %s.', array($data['name'], $e->getMessage()));
             $status = self::__ERROR_CUSTOM__;
         }
     } else {
         if (!General::uploadFile($abs_path, $data['name'], $data['tmp_name'], Symphony::Configuration()->get('write_mode', 'file'))) {
             $message = __('There was an error while trying to upload the file <code>%1$s</code> to the target directory <code>%2$s</code>.', array($data['name'], 'workspace/' . ltrim($rel_path, '/')));
             $status = self::__ERROR_CUSTOM__;
             return;
         }
     }
     $status = self::__OK__;
     $file = rtrim($rel_path, '/') . '/' . trim($data['name'], '/');
     // File has been replaced
     if (!is_null($existing_file) && strtolower($existing_file) != strtolower($file) && file_exists(WORKSPACE . $existing_file)) {
         General::deleteFile(WORKSPACE . $existing_file);
     }
     ## If browser doesn't send MIME type (e.g. .flv in Safari)
     if (strlen(trim($data['type'])) == 0) {
         $data['type'] = 'unknown';
     }
     return array('file' => $file, 'size' => $data['size'], 'mimetype' => $data['type'], 'meta' => serialize(self::getMetaInfo(WORKSPACE . $file, $data['type'])));
 }
开发者ID:pointybeard,项目名称:imageuploadfield,代码行数:80,代码来源:field.imageupload.php

示例11: processRawFieldData

 public function processRawFieldData($data, &$status, $simulate = false, $entry_id = null)
 {
     $status = self::__OK__;
     // Its not an array, so just retain the current data and return
     if (!is_array($data)) {
         $status = self::__OK__;
         // Recal existing data:
         $current = $this->_engine->Database->fetchRow(0, sprintf("\n\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\tf.name,\n\t\t\t\t\t\t\t\tf.file,\n\t\t\t\t\t\t\t\tf.size,\n\t\t\t\t\t\t\t\tf.mimetype,\n\t\t\t\t\t\t\t\tf.meta\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`tbl_entries_data_%s` AS f\n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\tf.entry_id = '%s'\n\t\t\t\t\t\t\t\tAND f.file = '%s'\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t", $this->get('id'), $entry_id, $this->cleanValue($data)));
         // Existing data found:
         if (is_array($current) and count($current) == 5) {
             return $current;
             // Look at new file:
         } else {
             return array('name' => basename($data), 'file' => $data, 'mimetype' => $this->getMimeType($data), 'size' => filesize(WORKSPACE . $data), 'meta' => serialize($this->getMetaInfo(WORKSPACE . $data, $this->getMimeType($data))));
         }
     }
     if ($simulate) {
         return;
     }
     if ($data['error'] == UPLOAD_ERR_NO_FILE or $data['error'] != UPLOAD_ERR_OK) {
         return;
     }
     // Sanitize the filename:
     if (is_array($data) and isset($data['name'])) {
         $name = $data['name'];
         $data['name'] = $this->getHashedFilename($data['name']);
     }
     // Upload the new file:
     $abs_path = DOCROOT . '/' . trim($this->get('destination'), '/');
     $rel_path = str_replace('/workspace', '', $this->get('destination'));
     if (!General::uploadFile($abs_path, $data['name'], $data['tmp_name'], $this->_engine->Configuration->get('write_mode', 'file'))) {
         $message = "There was an error while trying to upload the file <code>{$data['name']}</code> to the target directory <code>workspace/{$rel_path}</code>.";
         $status = self::__ERROR_CUSTOM__;
         return;
     }
     if ($entry_id) {
         $field_id = $this->get('id');
         $row = $this->Database->fetchRow(0, "\n\t\t\t\t\tSELECT\n\t\t\t\t\t\tf.*\n\t\t\t\t\tFROM\n\t\t\t\t\t\t`tbl_entries_data_{$field_id}` AS f\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tf.entry_id = '{$entry_id}'\n\t\t\t\t\tLIMIT 1\n\t\t\t\t");
         $existing_file = $abs_path . '/' . basename($row['file']);
         General::deleteFile($existing_file);
     }
     $status = self::__OK__;
     $file = rtrim($rel_path, '/') . '/' . trim($data['name'], '/');
     return array('name' => $name, 'file' => $file, 'size' => $data['size'], 'mimetype' => $data['type'], 'meta' => serialize($this->getMetaInfo(WORKSPACE . $file, $data['type'])));
 }
开发者ID:bauhouse,项目名称:sym-extensions,代码行数:45,代码来源:field.advancedupload.php

示例12: processFileUpload

 protected function processFileUpload($key)
 {
     $value = array();
     $file = $_FILES[$key];
     if (empty($file) || empty($file['name']) || empty($file['tmp_name'])) {
         return $value;
     }
     $size = intval($file['size']);
     $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
     $filename = $file['name'];
     if ($size > self::MAX_SIZE) {
         throw new Exception(sprintf("File is too big: %d when the max is %d", $size, self::MAX_SIZE));
     }
     if (!$ext || !in_array($ext, self::$EXT)) {
         throw new Exception(sprintf("File '%s' is not allowed. Please upload '%s' files only", $filename, implode(', ', self::$EXT)));
     }
     // unique file name
     $filename = time() . '-' . Lang::createFilename($file['name']);
     $value['file'] = self::DIR . $filename;
     $value['size'] = $size;
     // make a copy - to have the good name and ext
     $ret = General::uploadFile(WORKSPACE . self::DIR, $filename, $file['tmp_name'], Symphony::Configuration()->get('write_mode', 'file'));
     if ($ret) {
         return $value;
     } else {
         throw new Exception(sprintf('Could not save file `%s`. ', $filename));
     }
     return null;
 }
开发者ID:BloodBrother,项目名称:symphony-2-template,代码行数:29,代码来源:class.insertSection.php

示例13: updateField

 function updateField($field_id, $entry_id, $value_raw, $formatter = NULL, $create_if_nonexistant = true, $handle = NULL)
 {
     $sql = "SELECT `type` FROM `tbl_customfields` WHERE `id` = '{$field_id}' LIMIT 1";
     $field_type = $this->_db->fetchVar('type', 0, $sql);
     $existing_field = $this->_db->fetchRow(0, "SELECT * FROM `tbl_entries2customfields` WHERE `field_id` = '{$field_id}' AND `entry_id` = '{$entry_id}' LIMIT 1");
     if (!$create_if_nonexistant) {
         return false;
     }
     if ($field_type == 'upload') {
         $sql = "SELECT * FROM `tbl_customfields` WHERE `id` = '{$field_id}' LIMIT 1";
         $field = $this->_db->fetchRow(0, $sql);
         $field['destination_folder'] = trim($field['destination_folder'], '/');
         $field['destination_folder'] = $field['destination_folder'] . "/";
         $value_raw['deleted_files'] = preg_split('/,/', $value_raw['deleted_files'], -1, PREG_SPLIT_NO_EMPTY);
         $value_raw['deleted_files'] = array_map("trim", $value_raw['deleted_files']);
         if (is_array($value_raw['deleted_files']) && !empty($value_raw['deleted_files'])) {
             foreach ($value_raw['deleted_files'] as $file) {
                 if (!@is_file(DOCROOT . $file) || General::deleteFile(DOCROOT . $file)) {
                     $this->_db->query("DELETE FROM `tbl_entries2customfields_upload` WHERE `file` = '{$file}' AND `entry_id` = '{$entry_id}' AND `field_id` = '{$field_id}'");
                 } else {
                     $this->_parent->log->pushToLog("Could not delete file '" . DOCROOT . $file . "' from entry. Check permissions.", SYM_LOG_ERROR, true);
                 }
             }
         }
         if (is_array($value_raw['files']) && !empty($value_raw['files'])) {
             foreach ($value_raw['files'] as $file) {
                 if ($file['error'] == 0 && $file['size'] != 0) {
                     $filepath = "/" . $field['destination_folder'] . $file['name'];
                     $retVal = General::uploadFile(DOCROOT . "/" . $field['destination_folder'], $file['name'], $file['tmp_name'], $this->_parent->getConfigVar("write_mode", "file"));
                     if (!$retVal) {
                         return false;
                     }
                     $array = array();
                     $array['entry_id'] = $entry_id;
                     $array['field_id'] = $field_id;
                     $array['file'] = $filepath;
                     $array['type'] = $file['type'];
                     $array['size'] = $file['size'];
                     $this->_db->insert($array, 'tbl_entries2customfields_upload');
                 }
             }
         }
         if (is_array($existing_field) && !empty($existing_field)) {
             return true;
         }
         $field = array();
         $field['value'] = NULL;
         $field['value_raw'] = NULL;
         $field['entry_id'] = $entry_id;
         $field['field_id'] = $field_id;
         $field['handle'] = NULL;
         return $this->_db->insert($field, 'tbl_entries2customfields');
     } elseif ($field_type == 'foreign') {
         $this->_db->query("DELETE FROM `tbl_entries2customfields_list` WHERE `entry_id` = '{$entry_id}' AND `field_id` = '{$field_id}'");
         $field = array();
         if (is_array($value_raw) && !empty($value_raw)) {
             $field['value'] = NULL;
             $field['value_raw'] = NULL;
             foreach ($value_raw as $v) {
                 $item = array();
                 $item['value'] = $v;
                 $item['value_raw'] = General::sanitize($v);
                 $item['entry_id'] = $entry_id;
                 $item['field_id'] = $field_id;
                 $item['handle'] = $v;
                 $this->_db->insert($item, 'tbl_entries2customfields_list');
             }
         } else {
             $field['value'] = $value_raw;
             $field['value_raw'] = $value_raw;
         }
         $field['handle'] = NULL;
         $field['entry_id'] = $entry_id;
         $field['field_id'] = $field_id;
         if (is_array($existing_field) && !empty($existing_field)) {
             $sql = "UPDATE `tbl_entries2customfields`\n\t\t\t\t\t\t\tSET `value_raw` = '" . mysql_escape_string($field['value_raw']) . "',\n\t\t\t\t\t\t\t\t`value` = '" . mysql_escape_string($field['value']) . "'\n\t\t\t\t\t\t\tWHERE `id` = '" . $existing_field['id'] . "' LIMIT 1";
             return $this->_db->query($sql);
         }
         return $this->_db->insert($field, 'tbl_entries2customfields');
     } elseif ($field_type == 'multiselect') {
         $this->_db->query("DELETE FROM `tbl_entries2customfields_list` WHERE `entry_id` = '{$entry_id}' AND `field_id` = '{$field_id}'");
         if (is_array($value_raw) && !empty($value_raw)) {
             foreach ($value_raw as $item) {
                 $field = array();
                 $field['value'] = $this->__applyFormattingToString($formatter, $item);
                 $field['value_raw'] = General::sanitize($item);
                 $field['entry_id'] = $entry_id;
                 $field['field_id'] = $field_id;
                 $field['handle'] = Lang::createHandle($item, $this->_parent->getConfigVar('handle_length', 'admin'));
                 $this->_db->insert($field, 'tbl_entries2customfields_list');
             }
         }
         if (is_array($existing_field) && !empty($existing_field)) {
             return true;
         }
         $field = array();
         $field['value'] = NULL;
         $field['value_raw'] = NULL;
         $field['entry_id'] = $entry_id;
         $field['field_id'] = $field_id;
//.........这里部分代码省略.........
开发者ID:symphonycms,项目名称:symphony-1.7,代码行数:101,代码来源:class.entrymanager.php

示例14: processRawFieldData

 public function processRawFieldData($data, &$status, &$message = null, $simulate = false, $entry_id = null)
 {
     $status = self::__OK__;
     // No file given, save empty data:
     if ($data === null) {
         return array('file' => null, 'mimetype' => null, 'size' => null, 'meta' => null);
     }
     // Its not an array, so just retain the current data and return:
     if (is_array($data) === false) {
         // Ensure the file exists in the `WORKSPACE` directory
         // @link http://symphony-cms.com/discuss/issues/view/610/
         $file = WORKSPACE . preg_replace(array('%/+%', '%(^|/)\\.\\./%'), '/', $data);
         $result = array('file' => $data, 'mimetype' => null, 'size' => null, 'meta' => null);
         // Grab the existing entry data to preserve the MIME type and size information
         if (isset($entry_id)) {
             $row = Symphony::Database()->fetchRow(0, sprintf("SELECT `file`, `mimetype`, `size`, `meta` FROM `tbl_entries_data_%d` WHERE `entry_id` = %d", $this->get('id'), $entry_id));
             if (empty($row) === false) {
                 $result = $row;
             }
         }
         // Found the file, add any missing meta information:
         if (file_exists($file) && is_readable($file)) {
             if (empty($result['mimetype'])) {
                 $result['mimetype'] = function_exists('mime_content_type') ? mime_content_type($file) : 'application/octet-stream';
             }
             if (empty($result['size'])) {
                 $result['size'] = filesize($file);
             }
             if (empty($result['meta'])) {
                 $result['meta'] = serialize(self::getMetaInfo($file, $result['mimetype']));
             }
         } else {
             $message = __('The file uploaded is no longer available. Please check that it exists, and is readable.');
             $status = self::__INVALID_FIELDS__;
         }
         return $result;
     }
     if ($simulate && is_null($entry_id)) {
         return $data;
     }
     // Check to see if the entry already has a file associated with it:
     if (is_null($entry_id) === false) {
         $row = Symphony::Database()->fetchRow(0, sprintf("SELECT * FROM `tbl_entries_data_%s` WHERE `entry_id` = %d LIMIT 1", $this->get('id'), $entry_id));
         $existing_file = '/' . trim($row['file'], '/');
         // File was removed:
         if ($data['error'] == UPLOAD_ERR_NO_FILE && !is_null($existing_file) && is_file(WORKSPACE . $existing_file)) {
             General::deleteFile(WORKSPACE . $existing_file);
         }
     }
     // Do not continue on upload error:
     if ($data['error'] == UPLOAD_ERR_NO_FILE || $data['error'] != UPLOAD_ERR_OK) {
         return false;
     }
     // Where to upload the new file?
     $abs_path = DOCROOT . '/' . trim($this->get('destination'), '/');
     $rel_path = str_replace('/workspace', '', $this->get('destination'));
     // If a file already exists, then rename the file being uploaded by
     // adding `_1` to the filename. If `_1` already exists, the logic
     // will keep adding 1 until a filename is available (#672)
     if (file_exists($abs_path . '/' . $data['name'])) {
         $extension = General::getExtension($data['name']);
         $new_file = substr($abs_path . '/' . $data['name'], 0, -1 - strlen($extension));
         $renamed_file = $new_file;
         $count = 1;
         do {
             $renamed_file = $new_file . '_' . $count . '.' . $extension;
             $count++;
         } while (file_exists($renamed_file));
         // Extract the name filename from `$renamed_file`.
         $data['name'] = str_replace($abs_path . '/', '', $renamed_file);
     }
     // Sanitize the filename
     $data['name'] = Lang::createFilename($data['name']);
     $file = rtrim($rel_path, '/') . '/' . trim($data['name'], '/');
     // Attempt to upload the file:
     $uploaded = General::uploadFile($abs_path, $data['name'], $data['tmp_name'], Symphony::Configuration()->get('write_mode', 'file'));
     if ($uploaded === false) {
         $message = __('There was an error while trying to upload the file %1$s to the target directory %2$s.', array('<code>' . $data['name'] . '</code>', '<code>workspace/' . ltrim($rel_path, '/') . '</code>'));
         $status = self::__ERROR_CUSTOM__;
         return false;
     }
     // File has been replaced:
     if (isset($existing_file) && strtolower($existing_file) != strtolower($file) && is_file(WORKSPACE . $existing_file)) {
         General::deleteFile(WORKSPACE . $existing_file);
     }
     // If browser doesn't send MIME type (e.g. .flv in Safari)
     if (strlen(trim($data['type'])) == 0) {
         $data['type'] = function_exists('mime_content_type') ? mime_content_type($file) : 'application/octet-stream';
     }
     return array('file' => $file, 'size' => $data['size'], 'mimetype' => $data['type'], 'meta' => serialize(self::getMetaInfo(WORKSPACE . $file, $data['type'])));
 }
开发者ID:readona,项目名称:symphonyno5,代码行数:91,代码来源:field.upload.php


注:本文中的General::uploadFile方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。