Я попытался снять эту ошибку, я не понимаю, почему это происходит, потому что я правильно загружаю файл... Прямо сейчас загружается файл, он показывает мне ошибку. Уведомление об ошибке. Только переменные должны передаваться по ссылке...
<?php
if(isset($_FILES['csv'])){
$errors= array();
$file_name = $_FILES['csv']['name'];
$file_size = $_FILES['csv']['size'];
$file_tmp = $_FILES['csv']['tmp_name'];
$file_type = $_FILES['csv']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));// error line
$expensions= array("csv");
if(in_array($file_ext,$expensions)=== false){
$errors[]="extension not allowed, please choose a csv file.";
}
if($file_size > 2097152) {
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true) {
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success";
}else{
print_r($errors);
}
}
?>
<html>
<body>
<form action = "" method = "POST" enctype = "multipart/form-data">
<input type = "file" name = "csv" />// If I change this to name this code does not works,
<input type = "submit" value="Subir archivos"/>
</form>
</body>
</html>
При вызове end()
вы должны передать массив как переменную, а не возвращаемое значение функции. Итак, в...
$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));
вы можете назначить возврат explode()
переменной, а затем call end()
$file_parts =explode('.',$_FILES['csv']['name']);
$file_ext=strtolower(end($file_parts));
Если вы посмотрите на документацию для end()
, это показывает, что параметр array &$array
, &
показывает, что он прошел по ссылке.
Измените эту строку:
$file_ext = strtolower(end(explode('.', $_FILES['csv']['name'])));
К этому:
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
И в отношении того, If я change this to name this code does not works
, потому что вам также нужно изменить индекс массива, чтобы name
FILES
суперглобальным для доступа к данным.
if (isset($_FILES['name'])) {
$errors = [];
$file_name = $_FILES['name']['name'];
$file_size = $_FILES['name']['size'];
// and so on...
}
Он жалуется, когда вы не передаете переменную plain. Она не любит функции, передаваемые в.
Также вы уже присваиваете $_FILES['csv']['name']
как $name
, поэтому просто используйте $name
.
Разделите линию:
$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));
к
$file_ext = explode('.',$name);
$file_ext = end($file_ext);
$file_ext = strtolower($file_ext);