2017-03-26 20 views
0

私は私のAPIを管理するためにFOSRestbundleを使用しています。私はsymfony上でファイルをアップロードするアクションを実装しています。しかし、問題は、私は、ファイルのサイズを取得する必要があることを...私の行動は、この方法でファイルを取得されていますsymfony 3でアップロードされたファイルサイズを知る方法?

$uploadedfile = $request->files->get('file'); 

これは私がアップロードしたすべてのファイルの配列を取得します。 $のにUploadedFileオブジェクトのためにsymfonyのドキュメントを読む

は、と呼ばれる方法があります:

getClientSize() 

ので、私が使用し、常に0を返す:

$fileSize = $uploadedfile->getClientSize(); 

取得するための別の方法があります。ファイルサイズ?私は何か間違っている?

ありがとうございます。

+0

アップロード時にエラーが発生する可能性がありますか? getErrorを呼び出して、エラーを確認してください。 そのクラスの他のメンバーを呼び出すとどうなりますか? getClientOriginalNameなど? – r4ccoon

+0

ファイルアップロードがうまくいった。問題は、値が常に0であることです。 –

答えて

0

か?

http://symfony.com/doc/current/reference/constraints/File.html#maxsize

// src/AppBundle/Entity/Author.php 
namespace AppBundle\Entity; 

use Symfony\Component\Validator\Constraints as Assert; 

class Author 
{ 
    /** 
    * @Assert\File(
    *  maxSize = "1024k", 
    *  mimeTypes = {"application/pdf", "application/x-pdf"}, 
    *  mimeTypesMessage = "Please upload a valid PDF" 
    *) 
    */ 
    protected $bioFile; 
} 

あなたはしていない場合、そのためのエンティティを作成する必要があります。あなたのコントローラで検証を使用する場合

だから、あなたはあなたが、その場合には、あなたの与えられたAuthorエンティティに設定MAXSIZEよりも大きなファイルを、アップロードすることによって、それをテストすることができます

// ... 
use Symfony\Component\HttpFoundation\Response; 
use AppBundle\Entity\Author; 

// ... 
public function authorAction() 
{ 
    $author = new Author(); 

    // ... do something to the $author object 

    $validator = $this->get('validator'); 
    $errors = $validator->validate($author); 

    if (count($errors) > 0) { 

     $errorsString = (string) $errors; 

     return new Response($errorsString); 
    } 

    return new Response('The author is valid! Yes!'); 
} 

ような何かをするだろう「有効なPDFをアップロードしてください」

+0

こんにちは@お返事いただきありがとうございます、どうすれば使えますか?または、どこでコントローラの中でこれを使うことができますか?ありがとう –

+0

私の投稿を編集しました:) – Confidence

+0

ありがとう、私の友人!しかし...私はsymfonyをバックエンドとして、REST APIを使って使用します。私はビューのためのフォームを使用しない...これはとにかく動作しますか? –

0

ファイルを目的のフォルダに正常に移動しましたか?もし持っていれば、ネイティブPHP関数filesize()を呼び出すことができます。ここでの解決策について

http://php.net/manual/en/function.filesize.php

+0

フォルダに移動する前にファイルサイズを知る必要があるため、これは私の友人にとって問題です。このファイルサイズをphp.iniディレクティブと比較してから、自分のカスタムをスローする必要がありますファイルサイズのエラーが許可されていません... –

+0

あなたはこのファイルを見ることができますかhttp://symfony.com/doc/current/reference/constraints/File.html#uploadinisizeerrormessage これはあなたの検証/これを使用しているようですが、あなたの構造を少し変更する必要があります。 – r4ccoon

+0

ありがとう@ r4ccoon ...私のFOSRestControllerでこれを使用する例を教えてください。 symfonyを使って新しいので –

関連する問題