teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

2018/03/05 19:16

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -25,11 +25,11 @@
25
25
  /**
26
26
  * Validate the given file has safe filename.
27
27
  *
28
- * @param string $attribute
28
+ * @param string $attribute
29
- * @param mixed $value
29
+ * @param \Symfony\Component\HttpFoundation\File\UploadedFile $value
30
30
  * @return bool
31
31
  */
32
- public function validateSafeFilename($attribute, $value)
32
+ public function validateSafeFilename($attribute, \Symfony\Component\HttpFoundation\File\UploadedFile $value)
33
33
  {
34
34
  return preg_match('/\A(?!.)[\w.-]++(?<!.)\z/', $value->getClientOriginalName());
35
35
  }

2

バリデーションルールを定義

2018/03/05 19:16

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -1,2 +1,37 @@
1
1
  拡張子で`.`が入っている場合絶対に引っかかると思いますが,その点は大丈夫ですか?
2
+
3
+ ---
4
+
2
- あと,ここに書いてもファイル名のバリデーションにはならないと思います…)
5
+ あと,ここに書いてもファイル名のバリデーションにはならないと思います
6
+
7
+ [Laravel でカスタムバリデーションとそのテスト - Qiita](https://qiita.com/komatzz/items/c64c83a004b7f2c63ce6)
8
+
9
+ こちらを参考にカスタムバリデーションルールを定義してください。
10
+
11
+ ```php
12
+ class CustomValidator extends \Illuminate\Validation\Validator
13
+ {
14
+ /**
15
+ * The validation rules that may be applied to files.
16
+ *
17
+ * @var array
18
+ */
19
+ protected $fileRules = [
20
+ 'File', 'Image', 'Mimes', 'Mimetypes', 'Min',
21
+ 'Max', 'Size', 'Between', 'Dimensions',
22
+ 'SafeFilename',
23
+ ];
24
+
25
+ /**
26
+ * Validate the given file has safe filename.
27
+ *
28
+ * @param string $attribute
29
+ * @param mixed $value
30
+ * @return bool
31
+ */
32
+ public function validateSafeFilename($attribute, $value)
33
+ {
34
+ return preg_match('/\A(?!.)[\w.-]++(?<!.)\z/', $value->getClientOriginalName());
35
+ }
36
+ }
37
+ ```

1

追記

2018/03/05 19:13

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -1,1 +1,2 @@
1
- 拡張子で`.`が入っている場合絶対に引っかかると思いますが,その点は大丈夫ですか?
1
+ 拡張子で`.`が入っている場合絶対に引っかかると思いますが,その点は大丈夫ですか?
2
+ (あと,ここに書いてもファイル名のバリデーションにはならないと思います…)