Не удалось переместить файл в C: \ xampp \ tmp \ e3bB6FA.tmp [duplicate]

Геокодер является асинхронным, когда функция обратного вызова запускает цикл, и icon_marker остается установленным последним значением в массиве (зеленый).

Я бы предложил использовать закрытие функции для связывания свойства маркера с запросом (как вы это делаете, чтобы связать содержимое infowindow с маркером).

доказательство концепции fiddle

фрагмент кода :

function geocodeAddress(location, bounds, infowindow, geocoder, map) {
  var address = location[0];
  var icon_marker = location[1];
  geocoder.geocode({
    'address': address
  }, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {

      var marker = new google.maps.Marker({
        position: results[0].geometry.location,
        map: map,
        icon: icon_marker
      });

      google.maps.event.addListener(marker, 'click', function(evt) {
        infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
      });

      bounds.extend(results[0].geometry.location);
      map.fitBounds(bounds);
    } else {
      alert("Geocode of " + address + " failed," + status);
    }

  });
}

function initialize() {
  var myOptions = {
    zoom: 2,
    panControl: true,
    zoomControl: false,
    mapTypeControl: false,
    streetViewControl: false,
    center: {
      lat: 0,
      lng: 0
    },
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    mapTypeControl: false,
    scrollwheel: false,
  };
  var bounds = new google.maps.LatLngBounds();
  var map = new google.maps.Map(document.getElementById("google-container"), myOptions);
  var geocoder = new google.maps.Geocoder();

  var locations = [
    ['Russia', 'http://maps.google.com/mapfiles/ms/icons/blue.png'],
    ['Japan', 'http://maps.google.com/mapfiles/ms/icons/blue.png'],
    ['London', 'http://maps.google.com/mapfiles/ms/icons/green.png'],
    ['Brazil', 'http://maps.google.com/mapfiles/ms/icons/green.png']
  ];

  var infowindow = new google.maps.InfoWindow();

  for (i = 0; i < locations.length; i++) {
    geocodeAddress(locations[i], bounds, infowindow, geocoder, map)
  }
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#google-container {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}

12
задан YsoL8 4 October 2010 в 15:18
поделиться

9 ответов

Вы проверяли разрешение на временную папку для загрузки?

Что скажет php, если вы делаете:

var_dump($_FILES);
1
ответ дан ITroubs 19 August 2018 в 19:56
поделиться

$path должно быть именем файла, а не каталогом.

0
ответ дан j0k 19 August 2018 в 19:56
поделиться

Loïc Février, спасибо, вы спасли меня много времени!

Вот моя часть ... печать возможных ошибок во время загрузки.

Сначала создайте каталог Uploader / UploadedFiles Затем используйте код ниже ...

$destination=$_SERVER[DOCUMENT_ROOT]."/Uploader/UploadedFiles/" . $_FILES["file"]["name"];

if(move_uploaded_file($_FILES["file"]["tmp_name"],  $destination)){
   echo ("Stored in".$_SERVER[DOCUMENT_ROOT]."/Uploader/UploadedFiles/".$_FILES["file"]["name"]);
}else{
   $html_body = '<h1>File upload error!</h1>';
   switch ($_FILES[0]['error']) {
   case 1:
      $html_body .= 'The file is bigger than this PHP installation allows';
      break;
   case 2:
      $html_body .= 'The file is bigger than this form allows';
      break;
   case 3:
      $html_body .= 'Only part of the file was uploaded';
      break;
   case 4:
      $html_body .= 'No file was uploaded';
      break;
   default:
      $html_body .= 'unknown errror';
   } 
   echo ($html_body);
}
1
ответ дан Josh Lee 19 August 2018 в 19:56
поделиться
  • 1
    Использование $ _SERVER [DOCUMENT_ROOT] исправило это и для меня. – Yaz 25 March 2012 в 19:12

Не используйте

$path = "http://www.barbadostravelbuddy.co.uk/demo/images/carhire
    /accountile10420103260403000000pm.png"

, но

$path = "/home/sites/barbadostravelbuddy.co.uk/public_html/demo/images/carhire/
    accountile10420103260403000000pm.png"

Это должен быть путь в системе, а не URL.

1
ответ дан Loïc Février 19 August 2018 в 19:56
поделиться
  • 1
    Я попробовал / public_html / demo / images / car hire, который не работал. Моя структура каталогов - root & gt; public_html & gt; demo & gt; изображений & gt; Аренда автомобилей – YsoL8 4 October 2010 в 15:41
  • 2
    ОК. Попробуйте сделать mkdir ( php.net/manual/en/function.mkdir.php ) в этом каталоге. Это проверяет правильность каталога и права на него. – Loïc Février 4 October 2010 в 15:54
  • 3
  • 4
    Тогда вы либо не имеете права, либо ваш путь неверен. Можете ли вы сделать phpinfo () и дать нам _SERVER["DOCUMENT_ROOT"]? Можете ли вы предоставить нам разрешения, которые имеет каталог? – Loïc Février 4 October 2010 в 17:20
  • 5
    Тогда почему вы сказали «Моя структура каталогов - root & gt; public_html & gt; demo & gt; изображений & gt; прокат автомобилей " ? Это не ... Отвечать обновляется с правильным путем. – Loïc Février 4 October 2010 в 21:16

Основные этапы отладки:

  • Как выглядит print_r($_FILES)?
  • Фактически существует исходный файл?
  • Является ли флаг «error» для загрузки файла нулевым (будет видимым при выполнении print_r)
  • Как выглядит цель $path?
  • Вы указываете полное имя файла в целевом пути?

Предполагаю, что $path - это только путь к папке, а не полный файл name.

Обновление: вам нужно указать путь к файловой системе как $ path.

0
ответ дан Pekka 웃 19 August 2018 в 19:56
поделиться
0
ответ дан Robert Sinclair 19 August 2018 в 19:56
поделиться

Вы отредактировали ваш php.ini, чтобы убедиться, что upload_tmp_dir указывает на временный каталог?

1
ответ дан tim 19 August 2018 в 19:56
поделиться

С move_uploaded_file вам не нужны 777 разрешений. Каков результат работы $path? Вы подтвердили, что существует $path? Вы проверяли, что $field существует?

Либо $ field или $ path не существует, либо open_basedir в действительности является моим догадством.

Включено ли ограничение open_basedir? Это может помешать отправке загруженного файла. Посмотрите в php.ini для open_basedir, если указан путь, он включен и вы хотите узнать, находится ли путь назначения вашего загруженного файла к этому пути. Если это так, поэтому он не работает.

update

$ path не может быть URL-адресом, он должен быть локальным путем, например /home/user/public_html/

1
ответ дан Webnet 19 August 2018 в 19:56
поделиться

Я проверил переменные

Не проверять переменные, а проверять сообщения об ошибках. Это единственное, что вам нужно. Добавьте эти строки вверху вашего кода

ini_set('display_errors',1);
error_reporting(E_ALL);

и посмотрите, что он говорит. Если файл move_uploaded_file не удался, он всегда будет вызывать ошибку с подробным объяснением. Вы не поверите, но чтение сообщений об ошибках является более эффективным способом поиска проблемы, чем догадки , которые вы пытались до

. Я не могу поверить, что никто не упомянул об этом.

22
ответ дан Your Common Sense 19 August 2018 в 19:56
поделиться
  • 1
    Полезно знать, у меня никогда не было проблем с move_uploaded_file, поэтому мне никогда не нужно было знать. – Webnet 5 October 2010 в 14:09
  • 2
    Ошибка / сбой, если move_uploaded_file(), скорее всего, вызвано проблемой разрешения в папке назначения / каталоге. И да, вы можете видеть сообщения об ошибках с этими ответами, чтобы проверять сообщения об ошибках, а не проверять переменные на наличие ошибок. – Aryo 4 June 2013 в 05:24
  • 3
    Г-н здравый смысл, спасибо. – Andrew 24 February 2014 в 19:52
Другие вопросы по тегам:

Похожие вопросы: