Wed Dec 2019 1 year ago

Memahami HTTP Request (Retrieving Uploaded Files, Storing Uploaded Files) Laravel 5

File

Retrieving Uploaded Files

Anda dapat mengakses file yang diunggah dari instance Illuminate\Http\Request menggunakan metode file atau menggunakan properti dinamis. The metode file mengembalikan sebuah instance dari kelas Illuminate\Http\UploadedFile, yang memperpanjang PHP kelas SplFileInfo dan menyediakan berbagai metode untuk berinteraksi dengan file: 

$file = $request->file('photo');

$file = $request->photo;

Anda dapat menentukan apakah ada file pada permintaan menggunakan hasFile metode:

if ($request->hasFile('photo')) {
    //
}

 

Validating Successful Uploads

Selain memeriksa apakah file tersebut ada, Anda dapat memverifikasi bahwa tidak ada masalah mengunggah file melalui isValid metode:

if ($request->file('photo')->isValid()) {
    //
}

 

File  Paths & Extensions

The UploadedFile kelas juga berisi metode untuk mengakses jalur sepenuhnya-kualifikasi file dan ekstensi. The extension Metode akan mencoba menebak ekstensi file berdasarkan isinya. Ekstensi ini mungkin berbeda dari ekstensi yang disediakan oleh klien:

$path = $request->photo->path();

$extension = $request->photo->extension();

 

Other File Methods

Ada berbagai metode lain yang tersedia pada UploadedFile instance.

 

Storing Uploaded Files

Untuk menyimpan file yang diunggah, Anda biasanya akan menggunakan salah satu sistem file yang Anda konfigurasi . The UploadedFile kelas memiliki store metode yang akan memindahkan file upload ke salah satu disk Anda, yang mungkin menjadi lokasi di filesystem lokal Anda atau bahkan lokasi penyimpanan awan seperti Amazon S3.

The store Metode menerima path dimana file tersebut harus disimpan relatif terhadap direktori root dikonfigurasi filesystem. Jalur ini tidak boleh berisi nama file, karena ID unik akan secara otomatis dihasilkan untuk berfungsi sebagai nama file.

The store Metode juga menerima argumen kedua opsional untuk nama disk yang harus digunakan untuk menyimpan file. Metode ini akan mengembalikan path file relatif ke root disk:

$path = $request->photo->store('images');

$path = $request->photo->store('images', 's3');

Jika Anda tidak ingin nama file dihasilkan secara otomatis, Anda dapat menggunakan storeAs metode, yang menerima path, nama file, dan nama disk sebagai argumennya:

$path = $request->photo->storeAs('images', 'filename.jpg');

$path = $request->photo->storeAs('images', 'filename.jpg', 's3');

 

Configuring Trusted Proxies

Saat menjalankan aplikasi Anda di belakang penyeimbang beban yang mengakhiri sertifikat TLS / SSL, Anda mungkin memperhatikan bahwa aplikasi Anda terkadang tidak menghasilkan tautan HTTPS. Biasanya ini karena aplikasi Anda sedang meneruskan lalu lintas dari penyeimbang beban Anda pada port 80 dan tidak tahu itu harus menghasilkan tautan aman.

Untuk mengatasi ini, Anda dapat menggunakan App\Http\Middleware\TrustProxies middleware yang termasuk dalam aplikasi Laravel Anda, yang memungkinkan Anda untuk dengan cepat menyesuaikan penyeimbang muatan atau proksi yang harus dipercaya oleh aplikasi Anda. Proxy tepercaya Anda harus dicantumkan $proxies sebagai array di properti middleware ini. Selain mengonfigurasi proxy tepercaya, Anda dapat mengonfigurasi $headers proksi yang harus dipercaya: 

<?php

namespace App\Http\Middleware;

use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array
     */
    protected $proxies = [
        '192.168.1.1',
        '192.168.1.2',
    ];

    /**
     * The headers that should be used to detect proxies.
     *
     * @var string
     */
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
}

 

 

Trusting All Proxies

Jika Anda menggunakan Amazon AWS atau penyedia penyeimbang beban "cloud" lainnya, Anda mungkin tidak tahu alamat IP penyeimbang Anda yang sebenarnya. Dalam hal ini, Anda dapat menggunakan *untuk memercayai semua proxy:

/**
 * The trusted proxies for this application.
 *
 * @var array
 */
protected $proxies = '*';
http request belajar laravel tutorial laravel laravel storing uploaded files retrieving uploaded files