我目前正在使用 symfony 1.4,并希望允许用户上传 Microsoft Word docx 文件。使用下面的 sfWidgetFormInputFile 小部件和 sfValidatorFile,用户可以使用简单的 Web 表单选择并成功上传其 docx 文件。
$this->widgetSchema['file_name'] = new sfWidgetFormInputFile(array('label' => 'File'));
$this->validatorSchema['file_name'] = new sfValidatorFile(array(
'required' => true,
'path' => sfConfig::get('sf_upload_dir').DIRECTORY_SEPARATOR.sfConfig::get('app_dir_file_sharing').DIRECTORY_SEPARATOR,
'mime_types' => array('application/msword',
'application/vnd.ms-word',
'application/msword',
'application/msword; charset=binary')
), array(
'invalid' => 'Invalid file.',
'required' => 'Select a file to upload.',
'mime_types' => 'The file must be a supported type.'
));
问题在于,文件上传后,扩展名更改为.zip,并且文件包含xml文件的文件树。我的理解是,这是因为 Office 2007 现在使用 Open xml 文件格式。有什么方法可以使用 symfony 或 PHP 来防止这种情况发生吗?
问题是内容嗅探。新的 Office 格式是 .zip 文件,如果在上传时嗅探内容,浏览器会将其识别为 ZIP 文件并设置 Content-Type 标头。同样,下载时除非您的服务器设置正确的 Content-Type HTTP 响应标头,否则浏览器将假定这是一个 ZIP 文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)