Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Ошибка при загрузке картинок
Форумы портала PHP.SU » PHP » Программирование на PHP » Ошибка при загрузке картинок

Страниц (2): [1] 2 »
 

1. Vlador - 05 Января, 2013 - 00:18:02 - перейти к сообщению
Добрый вечер. Помогите исправить ошибку при загрузке картинок, выдает ошибки:
Warning: strrpos() expects parameter 1 to be string, array given in
Warning: filesize() [function.filesize]: stat failed for Array in
Warning: strrpos() expects parameter 1 to be string, array given in
Warning: filesize() [function.filesize]: stat failed for Array in


CODE (html):
скопировать код в буфер обмена
  1. html форма:
  2. <form action="index.php?act=add" method="post" enctype="multipart/form-data">
  3.   Send these files:<br>
  4.   <input name="userfile[]" type="file"><br>
  5.   <input name="userfile[]" type="file"><br>
  6.   <input type="submit" value="Send files">
  7. </form>



PHP:
скопировать код в буфер обмена
  1. php код :
  2.  
  3. $id = intval($_GET['id']);
  4. $a = uniqid();
  5. $max_image_width        = 380;
  6. $max_image_height       = 600;
  7. $max_image_size         = 64 * 1024;
  8. $valid_types            =  array("gif","jpg", "png", "jpeg");
  9.  
  10. if (isset($_FILES["userfile"])) {
  11.         $count = count($_FILES["userfile"]['name']);
  12. for($i = 0; $i < $count; $i++){
  13.         if (is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
  14.                 $filename = $_FILES['userfile']['tmp_name'];
  15.                 $ext = substr($_FILES['userfile']['name'],
  16.                         1 + strrpos($_FILES['userfile']['name'], "."));
  17.                 if (filesize($filename) > $max_image_size) {
  18.                         echo 'Error: File size > 64K.';
  19.                 } elseif (!in_array($ext, $valid_types)) {
  20.                         echo 'Error: Invalid file type.';
  21.                 } else {
  22.                         $size = GetImageSize($filename);
  23.                         if (($size) && ($size[0] < $max_image_width)
  24.                                 && ($size[1] < $max_image_height)) {
  25.                                 if (@move_uploaded_file($filename, "W:/domains/sajt.ru/".$id."_".$a.".jpg")) {
  26.                                         echo 'File successful uploaded.';
  27.                                 } else {
  28.                                         echo 'Error: moving fie failed.';
  29.                                 }
  30.                         } else {
  31.                                 echo 'Error: invalid image properties.';
  32.                         }
  33.                 }
  34.         } else {
  35.                 echo "Error: empty file.";
  36.         }}
  37. }
2. DeepVarvar - 05 Января, 2013 - 01:00:48 - перейти к сообщению
$_FILES['userfile']['name'][$i] ???
3. Vlador - 05 Января, 2013 - 01:07:07 - перейти к сообщению
что не так?
4. DeepVarvar - 05 Января, 2013 - 01:20:13 - перейти к сообщению
Ну я показал что не так, даже красным выделил..
А что так?
5. Vlador - 05 Января, 2013 - 01:21:55 - перейти к сообщению
все-же не пойму где косяк..
6. DeepVarvar - 05 Января, 2013 - 01:26:15 - перейти к сообщению
Вы начали цикл, а указатель позиции итератора цикла ($i) внутри нигде не применяете.
7. Vlador - 05 Января, 2013 - 01:38:25 - перейти к сообщению
теперь тех ошибок нет, но почему-то загружает только одну картинку:

PHP:
скопировать код в буфер обмена
  1. $id = intval($_GET['id']);
  2.  
  3. $a = uniqid();
  4.  
  5. $max_image_width        = 380;
  6.  
  7. $max_image_height       = 600;
  8.  
  9. $max_image_size         = 64 * 1024;
  10.  
  11. $valid_types            =  array("gif","jpg", "png", "jpeg");
  12.  
  13.  
  14.  
  15. if (isset($_FILES["userfile"])) {
  16.  
  17.         $count = count($_FILES["userfile"]['name']);
  18.  
  19. for($i = 0; $i < $count; $i++){
  20.  
  21.         if (is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
  22.  
  23.                 $filename = $_FILES['userfile']['tmp_name'][$i];
  24.  
  25.                 $ext = substr($_FILES['userfile']['name'][$i],
  26.  
  27.                         1 + strrpos($_FILES['userfile']['name'][$i], "."));
  28.  
  29.                 if (filesize($filename) > $max_image_size) {
  30.  
  31.                         echo 'Error: File size > 64K.';
  32.  
  33.                 } elseif (!in_array($ext, $valid_types)) {
  34.  
  35.                         echo 'Error: Invalid file type.';
  36.  
  37.                 } else {
  38.  
  39.                         $size = GetImageSize($filename);
  40.  
  41.                         if (($size) && ($size[0] < $max_image_width)
  42.  
  43.                                 && ($size[1] < $max_image_height)) {
  44.  
  45.                                 if (@move_uploaded_file($filename, "W:/domains/sajt.ru/".$id."_".$a.".jpg")) {
  46.  
  47.                                         echo 'File successful uploaded.';
  48.  
  49.                                 } else {
  50.  
  51.                                         echo 'Error: moving fie failed.';
  52.  
  53.                                 }
  54.  
  55.                         } else {
  56.  
  57.                                 echo 'Error: invalid image properties.';
  58.  
  59.                         }
  60.  
  61.                 }
  62.  
  63.         } else {
  64.  
  65.                 echo "Error: empty file.";
  66.  
  67.         }}
  68.  
  69. }
8. DeepVarvar - 05 Января, 2013 - 04:41:05 - перейти к сообщению
Vlador, а вы программировать собрались сами в будущем, или на каждом шагу будете спрашивать совета?
9. Vlador - 05 Января, 2013 - 14:11:14 - перейти к сообщению
я только учусь..
10. DelphinPRO - 05 Января, 2013 - 14:43:24 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $ext = substr($_FILES['userfile']['name'][$i],
  2.         1 + strrpos($_FILES['userfile']['name'][$i], "."))

отличный говнокодец Улыбка
PHP:
скопировать код в буфер обмена
  1. $ext = pathinfo($_FILES['userfile']['name'][$i], PATHINFO_EXTENSION);


в остальном код более менее корректен.

ах, да, еще здесь исходное расширение ставьте
PHP:
скопировать код в буфер обмена
  1. if (@move_uploaded_file($tmp_name,
  2.     "W:/domains/sajt.ru/".$id."_".$a.".".$ext)) {
11. Vlador - 05 Января, 2013 - 14:45:33 - перейти к сообщению
спасибо. а почему только одну картунку грузит?
12. DelphinPRO - 05 Января, 2013 - 14:46:12 - перейти к сообщению
и если не хочется разбираться в тонкостях - заюзайте готовый класс загрузки картинок
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.verot.net/php_class_upload_download.htm
13. Vlador - 05 Января, 2013 - 15:14:14 - перейти к сообщению
спасибо. а почему только одну картунку грузит?
14. DelphinPRO - 05 Января, 2013 - 15:34:47 - перейти к сообщению
Vlador пишет:
а почему только одну картунку грузит?

ну откуда я знаю. вы бы хоть сказали, какие сообщения вам выдаются.
15. Vlador - 05 Января, 2013 - 15:48:14 - перейти к сообщению
никакие сообщения не выдаются, я думаю может это $a = uniqid(); сохраняет имена файлов одинаковые?

 

Powered by ExBB FM 1.0 RC1