Toon posts:

Importhandler Laravel Excel

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op dit moment ben ik aan het spelen met het Excel pakket van maatwebsite op Laravel 5.1

Pakket is hier te bekijken: https://github.com/Maatwebsite/Laravel-Excel
http://www.maatwebsite.nl/laravel-excel/docs/import

De import code ziet er als volgt uit (uit de docs):

Waar ik vast loop: Laravel 5.1 heeft een Request class nodig via de functie / dependency injection.
Bij Laravel 5.0 kon je dat doen via Input::file() zoals in het voorbeeld. Op 5.1 werkt dat niet.

Heeft iemand enig idee hoe ik nu mijn file kan upload en de locatie in de getFile functie krijg?

Ik ben benieuwd of iemand hier antwoord op weet, alvast bedankt voor de moeite.

Bijvoorbeeld:
PHP:
1
2
3
4
5
public function upload(Request $request){

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

}


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class UserListImport extends \Maatwebsite\Excel\Files\ExcelFile {

    public function getFile()
    {
        return storage_path('exports') . '/file.csv';
    }

    public function getFilters()
    {
        return [
            'chunk'
        ];
    }

}


PHP:
1
2
3
4
5
6
7
8
9
10
11
//If you want to have the getFile() dynamic based on user's input, you can easily do:

public function getFile()
{
    // Import a user provided file
    $file = Input::file('report');
    $filename = $this->doSomethingLikeUpload($file);

    // Return it's location
    return $filename;
}

Alle reacties


Acties:
  • 0 Henk 'm!

  • topscoder
  • Registratie: December 2007
  • Laatst online: 07-11-2022
In Laravel 5.1 zou het op deze manier moeten werken:

PHP:
1
2
3
4
5
6
7
8
9
10
11
if ($request->hasFile('photo')) {
    if ($request->file('photo')->isValid()) {
        $file = $request->file('photo');
    }
    else {
        dd('input file is invalid');
    }
}
else {
    dd('input file "photo" is not found');
}


Heb je wel multipart/form-data op je <form> staan?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het uploaden van de file lukt goed via de controller. Ik maak morgen even een repo op git aan dat maakt het wat duidelijker.

Alvast bedankt voor je reactie

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hier het voorbeeld.

De gecommente functie werkt prima met verwijzing naar een statische file.
de upload functie werkt niet. De Request class is niet bruikbaar in de import transaction upload denk ik.

Hopelijk is het zo wat duidelijker!

Thnx

Controller:
https://github.com/avover...ster/app/Http/Controllers

Import
https://github.com/avover...master/app/Classes/Import

CSV Mock
https://github.com/avover...ee/master/storage/uploads

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:55

Creepy

Tactical Espionage Splatterer

Het zou voor de toekomst beter zijn om de relevante code toch even in een post te zetten. Dan hebben anderen ook nog wat aan het topic als jij je code weghaalt/verwijdert van GitHub. Dus vul het even aan aub.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De Request in het upload voorbeeld komt niet door.

Daar komt een foutmelding op wanneer je de request / file properties aanspreekt.

Ideeën zijn welkom :)

PHP:
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
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Classes\Import\TransactionImport as ImportTransaction;
use App\Classes\Import\TransactionImportUpload as ImportTransactionUpload;


class HomeController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */

    public function index(){
        return view('home');
    }


    /**
     * Post with uploaded file
     *
     * @return Response
     */

    public function indexpost(ImportTransactionUpload $import)
    {
        //
        $import->noHeading();
        $results = $import->get()->toArray();


        echo '<pre>';
        print_r($results);

    }

    /**
     * Post with static file -> works
     *
     * @return Response
     */

    public function indexpost(ImportTransaction $import)
    {
        //
        $import->noHeading();
        $results = $import->get()->toArray();


        echo '<pre>';
        print_r($results);

    }

   
}


PHP:
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
<?php

// statische file: deze werkt

namespace App\Classes\Import;

class TransactionImport extends \Maatwebsite\Excel\Files\ExcelFile
{

    protected $delimiter  = ',';
    protected $enclosure  = '"';
    protected $lineEnding = '\n';

    public function getFile()
    {
        return  'storage/uploads/MOCK_DATA.csv';
    }

    public function getFilters()
    {
        return [
            'chunk'
        ];
    }

}


PHP:
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
<?php

namespace App\Classes\Import;

// added request namespace
use Illuminate\Http\Request;


class TransactionImportUpload extends \Maatwebsite\Excel\Files\ExcelFile
{

    protected $delimiter  = ',';
    protected $enclosure  = '"';
    protected $lineEnding = '\n';


    public function getFile()
    {

        $request = new Request;
        $file = $request->file('myfile');
        $filename = $file->getClientOriginalName();

        // error:
        //Call to a member function getClientOriginalName() on null

        return $filename;

    }

    public function getFilters()
    {
        return [
            'chunk'
        ];
    }

}

[ Voor 18% gewijzigd door Verwijderd op 18-01-2016 19:23 ]

Pagina: 1