Laravel France

Problème récupération fichier dans un formulaire

Avatar de ArnaudStavrou
ArnaudStavrou

Bonjour,

Dans un système de messagerie, je donne la possibilité d'y joindre un ou plusieurs fichiers. Jusque là pas de problème.

Le soucis que j'ai, c'est que le $request->file('file')->path() me renvoi false, tout comme le getClientOriginalName(). Dans mon environnement de développement tout fonctionne résultat du dd($request->file('files')):

path: "C:\Users\arnaud\AppData\Local\Temp"
    filename: "php8553.tmp"
    basename: "php8553.tmp"
    pathname: "C:\Users\arnaud\AppData\Local\Temp\php8553.tmp"
    extension: "tmp"
    realPath: "C:\Users\arnaud\AppData\Local\Temp\php8553.tmp"
    aTime: 2021-10-21 15:53:57
    mTime: 2021-10-21 15:53:57
    cTime: 2021-10-21 15:53:57
    inode: 0
    size: 401838
    perms: 0100666
    owner: 0
    group: 0
    type: "file"
    writable: true
    readable: true
    executable: false
    file: true
    dir: false
    link: false
    linkTarget: "C:\Users\arnaud\AppData\Local\Temp\php8553.tmp"

mais dans mon environnement de production cela ne fonctionne plus dd($request->file('files')):

path: "C:\Windows\Temp"
    filename: "php6C0.tmp"
    basename: "php6C0.tmp"
    pathname: "C:\Windows\Temp\php6C0.tmp"
    extension: "tmp"
    realPath: false
    aTime: 2021-10-21 15:48:14
    mTime: 2021-10-21 15:48:15
    cTime: 2021-10-21 15:48:14
    inode: 0
    size: 401838
    perms: 0100666
    owner: 0
    group: 0
    type: "file"
    writable: true
    readable: true
    executable: false
    file: true
    dir: false
    link: false
    linkTarget: "C:\Windows\Temp\php6C0.tmp"

Je ne comprends pas pourquoi, et je suis à court d'idée pour résoudre ce problème. Avez-vous une piste viable ?

Merci d'avance pour votre aide

Posté il y a 1 mois
Avatar de ArnaudStavrou
ArnaudStavrou

Bonjour,

Pour information, je vais vous mettre la solution à mon problème. Je pense que cela est dû que mon environnement de développement est sur un serveur Apache et que mon serveur de production est sous IIS

Code développement :

$attachment = [
                    'nom'           => utf8_encode(str_replace(' ', '_', $file->getClientOriginalName())),
                    'typePiece'     => str_replace('\\', '_', $file->getClientMimeType()),
                    'piecable_id'   => $message->IDmessages,
                    'piecable_type' => 'messages',
                    'poids'         => $file->getClientSize(),
                    'piece'         => strtoupper(bin2hex(file_get_contents($file->path())))
                ];

Code production:

 $attachment = [
                    'nom'           => utf8_encode(str_replace(' ', '_', $file->getClientOriginalName())),
                    'typePiece'     => str_replace('\\', '_', $file->getClientMimeType()),
                    'piecable_id'   => $message->IDmessages,
                    'piecable_type' => 'messages',
                    'poids'         => $file->getSize(),
                    'piece'         => strtoupper(bin2hex(file_get_contents($file->getpathName())))
                ];

J'ai donc modifier mon code à 2 endroits :

$file->getSize() au lieu de $file->getClientSize()

$file->getpathName() au lieu de $file->path()

J'èspre que cela pourra servir à quelqu'un.

Bonne continuation à vous.

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.