PHP - Post de archivo y datos

 
Vista:
sin imagen de perfil
Val: 47
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Post de archivo y datos

Publicado por Marlon (15 intervenciones) el 22/03/2019 22:04:33
Buenas Tardes
Tengo un formulario en el que voy a enviar imágenes y datos, lo que hago es enviar los datos con post en un ajax, cuando no se envía un archivo los datos me los guarda correctamente en la base de datos pero cuando hay archivo no toma los datos que estoy enviando en el post, (si los puedo leer pero las variables quedan como si estuvieran vacías) alguien sabría el porque de esta situación?¡alguna solución?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kathyu
Val: 1.670
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Post de archivo y datos

Publicado por Kathyu (455 intervenciones) el 22/03/2019 22:46:39
Que va a meter a la DB? imagen o nombre de esta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 47
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Post de archivo y datos

Publicado por Marlon (15 intervenciones) el 22/03/2019 23:19:19
nombre de esta, el nombre de un directorio que creo y otros datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de santi
Val: 628
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Post de archivo y datos

Publicado por santi (201 intervenciones) el 23/03/2019 00:28:45
Hola,

en este caso, primero debes añadir la ruta de la imagen o archivo adjunto e implementarlo en la bbdd. De esta forma si sigues la ruta del archivo y es correcta, no hay problema.. Con esto quiero decir que si en el campo de la bbdd pone http://la_ruta_del_archivo y se muestra el archivo correcto, es que el error es otro..

Esto teniendo en cuenta que tienes claro que el form con archivos adjuntos se envía con un enctype específico y lo recibes como un $_FILES y NO como un $_POST porque php no lo interpretará como debe..

Pero si no es ninguno de los casos anteriores, estaría bien que añadieras parte de tu código para contratarlo..

Saludos ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 47
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Post de archivo y datos

Publicado por Marlon (15 intervenciones) el 23/03/2019 14:30:40
Hola santi mi ajax

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var files = $('#image_file')[0].files[0];
formData.append('image_file',files);
formData.append('title',titleVideo);
formData.append('category',categoryVideo);
formData.append('summary',summaryVideo);
formData.append('video',inputvideo);
formData.append('description',descriptionModalVideo);
formData.append('localId',localIdVideo);
$.ajax({ type: "POST",
    url: "../videos/upload",
    type: 'post',
    data: formData,
    contentType: false,
    processData: false,
    success: function(resVideoAdd){
      console.log(resVideoAdd);
 
      return false;
    },error: function(jqXHR, textStatus, errorThrown){
      if (jqXHR.status === 403) {
      }
    }
    //FUNCION 
});//AJAX 

el php donde llegan los datos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
echo var_dump ($_POST);
echo var_dump ($_FILES);
$contentUser = new ContentsController();
 
//echo $_POST['title'];
if($this->request->data(['localId']) == ''){
    $localId = null;
}else{
    $localId= $this->request->data(['localId']);
}
 
$dir = null;
// $title = $_POST['title'];
$title = $this->request->data(['title']);
//$title = $_FILES["title"];
//echo $title;
$category = $this->request->data(['category']);
$summary = $this->request->data(['summary']);
$videoUrl = $this->request->data(['video']);
$description = $this->request->data(['description']);
$id_content=$contentUser->add($localId);
 
$video = $this->Videos->newEntity();
$video->title = $title;
$video->summary = $summary;
$video->body = $description;
$video->category_id = (int)$category;
 
$video->video=videoUrl
 
$video->content_id = $id_content;
// function uploadImageFile() { // Note: GD library is required for this function
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $iWidth = $iHeight = 300; // desired image result dimensions
    $iJpgQuality = 90;
    if (isset($_FILES['image_file'])) {
        $Response = 'si';
        $originalPhoto = $_FILES['image_file'];
        // if no errors and size less than 250kb
        if (! $_FILES['image_file']['error'] && $_FILES['image_file']['size'] < 250 * 1024) {
            if (is_uploaded_file($_FILES['image_file']['tmp_name'])) {
                // new unique filename
                $rand = range(0000, 9999);
                shuffle($rand);
                foreach ($rand as $val) {
                    $code = $val;
                }
                $time = time();
                $dir = $time.''.$code;
                mkdir("../webroot/upload/videos/photo/".$dir, 0777,true);
                $sTempFileName = '../webroot/upload/videos/photo/'.$dir.'/'.$time;
                //$sTempFileNameOriginal = '../webroot/upload/videos/photo/'.$dir.'/'.$time;
                // $video->photo = $time;
                // $video->photo_dir = $dir;
                // move uploaded file into cache folder
 
                move_uploaded_file($_FILES['image_file']['tmp_name'], $sTempFileName);
 
                // change file permission to 644
                @chmod($sTempFileName, 0644);
                if (file_exists($sTempFileName) && filesize($sTempFileName) > 0) {
                    $aSize = getimagesize($sTempFileName); // try to obtain image info
                    if (!$aSize) {
                        @unlink($sTempFileName);
                        return;
                    }
                    // check for image type
                    switch($aSize[2]) {
                        case IMAGETYPE_JPEG:
                            $sExt = '.jpg';
                            // create a new image from file
                            $vImg = @imagecreatefromjpeg($sTempFileName);
                            break;
                        case IMAGETYPE_PNG:
                            $sExt = '.png';
                            // create a new image from file
                            $vImg = @imagecreatefrompng($sTempFileName);
                            break;
                        default:
                            @unlink($sTempFileName);
                            return;
                    }
 
                    // create a new true color image
                    $vDstImg = @imagecreatetruecolor( $iWidth, $iHeight );
                    // copy and resize part of an image with resampling
                    imagecopyresampled($vDstImg, $vImg, 0, 0, (int)$this->request->data(['x1']), (int)$this->request->data(['y1']), $iWidth, $iHeight, (int)$this->request->data(['w']), (int)$this->request->data(['h']));
                    // define a result image filename
                    $sResultFileName = $sTempFileName . $sExt;
                    // output image to file
                    imagejpeg($vDstImg, $sResultFileName, $iJpgQuality);
                    @unlink($sTempFileName);
                    return $sResultFileName;
                }
            }
        }
 
    }
}
// }
 
// $sImage = uploadImageFile();
 
    if($this->Videos->save($video)){
    }

el post y file llegan pero no cuando lo asigno a las variables estas resultan vacias y no guarda en la bd pero si guarda la imagen (todo esto cuando llega el archivo).
Por otro lado cuando hago el post sin el archivo todo pasa correctamente y guarda en la bd.

gracias de antemano :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar