2015-12-19 3 views
2

Есть две страницы. Страница 1 содержит:Две петли и move_uploaded_file, я немного смущен

Page1:

$_SESSION['temporary'][$i] = $_FILES['img']['tmp_name'][$i]; 
$_SESSION['image'][$i] = $_FILES['img']['name'][$i]; 

Page 2 содержит:

Page2:

for($i=0;$i<count($_SESSION['temporary']);$i++) 
{ 
    echo '<br/>'.$_SESSION['temporary'][$i]; 
} 

for($i=0;$i<count($_SESSION['image']);$i++) 
{ 
    $path = $pre_path.'/'.basename($_SESSION['image'][$i]); 
    echo '<br/>'.$_SESSION['image'][$i]; 
} 

То, что я хочу сделать, это использовать move_uploaded_file функцию Пример:

move_uploaded_file($_SESSION['temporary'][$i], $path); 

Я не могу использовать эту функцию во втором цикле. потому что он не будет содержать

$ _SESSION [ 'временный'] [$ я]

из первого цикла.

Почему я так делаю сценарий? Поскольку мой скрипт работает в следующих шагах:

  1. Page 0: Выберите категорию и свойства, и загружать изображения,
  2. Page 1: Показать выбранные категории и изображения, закодированные base64,
  3. Page 2: Вставка в базу данных все.

Я действительно не имею против этого. Я буду очень рад, если кто-нибудь мне поможет, и, конечно, я принимаю ответ и даю большой палец. Если вы найдете его более легким, вы можете использовать Еогеасп цикл вместо:

foreach($_SESSION['temporary'] as $temporary) 
{ 
    echo '<br/>'.$temporary; 
} 

foreach($_SESSION['image'] as $image) 
{ 
    $path = $pre_path.'/'.basename($image); 
    echo '<br/>'.$image;  
} 

ответ

1

На стр.2 себя вы можете загружать файлы, как это:

$num_of_files = count($_SESSION['temporary']); // or count($_SESSION['image']) 
for($i=0; $i < $num_of_files; $i++){ 
    echo '<br/>'.$_SESSION['temporary'][$i]; 
    echo '<br/>'.$_SESSION['image'][$i]; 
    $path = $pre_path.'/'.basename($_SESSION['image'][$i]); 
    move_uploaded_file($_SESSION['temporary'][$i], $path); 
} 

Видимо, я был неправильно, вы не можете загружать такие файлы.

От the manual,

move_uploaded_file() функция проверяет, что файл обозначается именем файла является допустимым загруженным файлом (это означает, что он был загружен через механизм загрузки HTTP POST в PHP). Если файл действителен, он будет перенесен в имя файла, заданное адресатом.

$_FILES массив содержит только информацию о файле, который был загружен в запросе. Если вы не сохраните этот файл в другом месте в рамках одного и того же запроса, он будет удален PHP в конце запроса. Вы не можете просто сохранить $_FILES['uploadfoto']['tmp_name'] в сеанс и ожидать, что файл все равно будет там позже, потому что его не будет.

+0

Ницца, вы нашли проблему для петель, спасибо. Но файлы не загружаются. :( –

+0

Какой ошибки он показывает –

+0

Никакие ошибки не появляются Но я сделал что-то вроде: ". \t \t если (move_uploaded_file ($ _ SESSION [ 'временного'] [$ я], $ пути)) \t \t { \t \t \t эхо 'закачано'; \t \t} \t \t еще \t \t { \t \t \t эхо 'Не удалось загрузить', \t \t}» , и теперь он показывает, что «загрузка не удалась». –

Смежные вопросы