Ошибка -> Примечание: неопределенный индекс: файл, при попытке загрузить изображение с формой с помощью переменной $ _FILE - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь изучить Symfony4 и хочу создать приложение с помощью API Twitter.У меня проблема в том, что когда я пытаюсь загрузить изображение в форме, я не могу сохранить значение записи (значок) в переменной $ _FILE, и именно поэтому он показывает мне эту ошибку.

Я намерен опубликовать мультимедийный твит, если вместо того, чтобы пытаться загрузить фотографию по форме, я проставил маршрут, а если вы опубликуете твит с фотографией, то при таком подходе я не смогу выбрать, какую фотографиюзагрузить, и он всегда будет публиковать тот, который определен маршрутом.

Это мой код ниже:

$session= new Session(); #en symfony la session se crea instanciando un objeto de la clase Session.
$session->start(); #para iniciar la sesion, llamamos al metodo start del objeto creado a partir de Session, en lugar de usar session_start() como veniamos haciendo en php plano.

d($session->set('media',$_FILES['file'])); # d() = vardump() pertenece a la libreria kint

$mensaje = $_POST['tweet']; #almacena el texto introducido en textarea
$respuesta = sendTweet($mensaje); #llama a la funcion para enviar tweet (en /lib/funcionesTwitter.php) y pasa como parametro el texto almacenado en textarea
d($json = json_decode($respuesta)); #descompone el resultado de la funcion sendTweet() en un json con los datos del tweet que luego llamaremos en la plantilla twig

/*claves de acceso de la api creada en twiter.developers*/
$accessToken="xxx";
$accessTokenSecret="xxx";
$consumerKey="xxx";
$consumerKeySecret="xxx";


$connection = new TwitterOAuth($consumerKey, $consumerKeySecret, $accessToken, $accessTokenSecret);

$foto= $session->get('media');

$media1 = $connection->upload('media/upload', ['media' => $foto]); #almacenamos la imagen en la variable y usamos el obj connection para llamar al metodo de la clase TwitterOAuth de la libreria con el mismo nombre.
$media2 = $connection->upload('media/upload', ['media' => '../doc/img/supernova2.jpg']);
$parameters = [
    'status' => $json->text,
    'media_ids' => implode(',', [$media1->media_id_string, $media2->media_id_string])
];
$result = $connection->post('statuses/update', $parameters);

#redirige al template twig con la ruta de esta funcion e inserta en el template las variables aqui definidas y que llamemos en el tpl.
return $this->render('TwitterTpl/twitter.html.twig', array(
  'tweets'=>'',
  'titulo'=>'',
  'json'=>$json,
  'imagen'=>$result
));

, и это форма, которую я имею в шаблоне ветки:

<form class="fomulario" enctype="multipart/form-data" action="{{path('enviaTweetMulti')}}" method="post" >
    <label for="exampleFormControlTextarea1">Enviar tweet</label>
    <textarea class="form-control z-depth-1 mb-3" id="exampleFormControlTextarea6" rows="3" placeholder="Write something here..." rows="7" cols="20" maxlength="140" name="tweet"></textarea>

      <div class="form-group">
        <input type="file" class="form-control-file" id="exampleFormControlFile1">
      </div>

    <button type="submit" class="btn btn-outline-primary waves-effect" ><i class="fa fa-share ml-1"></i> Tweet</button>
  </form>

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

но, как я уже сказал, выдает ошибку. Примечание: неопределенный индекс: файл в этой строке $ session-> set ('media', $ _ FILES ['file'])

...