当我用这个扩展名测试图像文件时,我正在制作一个上传脚本.JPG,我不知道jpg或jpeg之间的区别,但似乎$ _FILES无法识别这种文件类型.
我读过一些线程$ _FILES ins't可靠的,当涉及到MIME类型,所以我决定使用的PHP的MIME类型功能mime_content_type(),PHP的getimagesize(),pathinfo()虽然PATHINFO返回一个文件名称和类型,但我需要的路径对于不存在的文件,所有函数都以$ _FILES ['file'] ['tmp_name']作为参数传递.
所以当我决定上传一个图像文件例如sample.JPG时出现了这个问题,我认为这些文件大部分来自相机< - 这就是我的想法,但更重要的是我可以上传它们. JPG,.jpg,jpeg,.png.除了.JPG,所有这些都很好.
主要问题是$ _FILES中的字段['tmp_name']在上传.JPG时没有值.
你遇到这个问题的任何人请分享你的解决方法或"你是怎么做的"这样的事情.
sta*_*san 47
如果$_FILES[$field]['tmp_name']为空,则表示文件尚未上传.你应该看看$_FILES[$field]['error']为什么.
FWIW,据我所知,mime-type $_FILES[]是由浏览器提供的.
更新:这里有一些用于处理所有文件上传错误的封装代码:
$message = 'Error uploading file';
switch( $_FILES['newfile']['error'] ) {
case UPLOAD_ERR_OK:
$message = false;;
break;
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
$message .= ' - file too large (limit of '.get_max_upload().' bytes).';
break;
case UPLOAD_ERR_PARTIAL:
$message .= ' - file upload was not completed.';
break;
case UPLOAD_ERR_NO_FILE:
$message .= ' - zero-length file uploaded.';
break;
default:
$message .= ' - internal error #'.$_FILES['newfile']['error'];
break;
}
if( !$message ) {
if( !is_uploaded_file($_FILES['newfile']['tmp_name']) ) {
$message = 'Error uploading file - unknown error.';
} else {
// Let's see if we can move the file...
$dest .= '/'.$this_file;
if( !move_uploaded_file($_FILES['newfile']['tmp_name'], $dest) ) { // No error supporession so we can see the underlying error.
$message = 'Error uploading file - could not save upload (this will probably be a permissions problem in '.$dest.')';
} else {
$message = 'File uploaded okay.';
}
}
}
Run Code Online (Sandbox Code Playgroud)
crm*_*cco 19
检查您的php.ini,特别是此设置
; Maximum allowed size for uploaded files.
; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
upload_max_filesize = 6M
Run Code Online (Sandbox Code Playgroud)
或者在Apache Config中执行此操作:
<Directory "/var/www/vhosts/path/to/your/directory/import/">
php_value post_max_size 6M
php_value upload_max_filesize 6M
</Directory>
Run Code Online (Sandbox Code Playgroud)
我还会说,如果您上传的文件大于php.ini upload_max_filesize设置,那么PHP不会在错误日志中报告错误.例如,如果您将其设置为6MB文件2M(我认为是默认值),则上传6MB文件.
发布答案是因为我的评分太低了.
记住在php.ini中设置最大文件大小上限后重新启动服务器.我花了好几个小时在这个问题上认为这不是文件大小问题,同时我忘了重新启动.重启后一切正常.
我希望这可以帮助别人.