file_path:
name: fichier
type: admin_input_file_tag
upload_dir: sfCmsContent/file
params: disabled=false include_remove=true
help: appuyer sur le bouton 'Parcourir...' pour sélectionner un fichier contenu dans votre ordinateur
Les problèmes pointent leur nez quand on tente d'uploader des fichiers avec des extensions un peu exotiques, dans mon cas l'extension .pot (modèle de conception sous power point) était systématiquement remplacée par l'extension .ppt.
C'est dû à la méthode getFileExtension() de sfWebRequest, et en particulier au fichier mime_types.dat qui contient les associations entre type mime et extension. La difficulté dans le cas des .pot est que ce type de fichier renvoie le même type mime que les .ppt
application/vnd.ms-powerpoint
Or mime_types.dat permet d'associer un et un seul type mime à une et une seule extension ... j'ai donc opté pour la ruse en surchargeant updateSfCmsContentFromRequest() comme suitprotected function updateSfCmsContentFromRequest()
{
$sfCmsContent = $this->getRequestParameter('sf_cms_content');
parent::updateSfCmsContentFromRequest();
if (!$this->getRequest()->hasErrors())
{
$tmp = $this->getRequest()->getFileName('sf_cms_content');
if($tmp['file_path'])
{
$path = sfConfig::get('sf_upload_dir').'/'.sfCmsContent/file
if(!is_dir($path))
{
mkdir($path);
}
$extension = myTools::MimeTypeInfo($tmp['file_path']);
$filename = myTools::FileNameInfo($this->sf_cms_content->getFilePath());
rename($path.'/'.$this->sf_cms_content->getFilePath(), $path.'/'.$filename.'.'.$extension);
$this->sf_cms_content->setFilePath($filename.'.'.$extension);
$this->sf_cms_content->setMimeType(myTools::MimeTypeInfo($tmp['file_path']));
}
}
où
class myTools
{
public static function MimeTypeInfo($file_name)
{
return substr($file_name, strrpos($file_name, ".")+1);
}
public static function FileNameInfo($file_name)
{
return substr($file_name, 0, strrpos($file_name, "."));
}
}
Commentaires
Il n'y a aucun commentaire pour le moment. Ajouter un Commentaire




des icones complètement gratuites
Jailbreak de l'iPhone 3G et partage de la connexion 3G avec PdaNet
backupPC