Skip to content

Commit 927c7b1

Browse files
Merge pull request #3 from we-bridge/add_original_file_name
Add original file name, form-specific ids to the fields and remove li…
2 parents 190cde3 + e6882e8 commit 927c7b1

6 files changed

Lines changed: 48 additions & 20 deletions

File tree

EventListener/UploadListener.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,24 @@
66

77
class UploadListener
88
{
9-
private $uploadDirectory;
10-
11-
public function __construct($uploadDirectory)
12-
{
13-
$this->uploadDirectory = $uploadDirectory;
14-
}
15-
169
public function onUpload(PostPersistEvent $event)
1710
{
1811
$response = $event->getResponse();
19-
//$response['file_path'] = $this->uploadDirectory . $event->getFile()->getFilename();
12+
$uploadDirectory = $event->getConfig()['storage']['directory'];
13+
14+
$fileBag = $event->getRequest()->files->all();
15+
$uploadFile = null;
16+
array_walk_recursive($fileBag, function($item, $key) use (&$uploadFile) {
17+
if ($item instanceof \Symfony\Component\HttpFoundation\File\UploadedFile) {
18+
$uploadFile = $item;
19+
}
20+
});
2021
$response['status'] = 'success';
2122
$response['files'] = array(
2223
array(
24+
'originalName' => $uploadFile->getClientOriginalName(),
2325
'name' => $event->getFile()->getFilename(),
24-
'url' => $this->uploadDirectory . $event->getFile()->getFilename()
26+
'url' => $uploadDirectory . '/' . $event->getFile()->getFilename()
2527
)
2628
);
2729
return $response;

Form/LargeFileType.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ function (FormEvent $event) use ($options) {
5757
'mapped' => false
5858
)
5959
);
60+
$form->getParent()->add(
61+
$form->getConfig()->getName() . 'OriginalName',
62+
'hidden',
63+
array(
64+
'mapped' => false
65+
)
66+
);
6067
}
6168
);
6269
}
@@ -70,7 +77,9 @@ function (FormEvent $event) use ($options) {
7077
*/
7178
public function buildView(FormView $view, FormInterface $form, array $options)
7279
{
80+
$view->vars['view_id_prefix'] = $view->parent->vars['id'] . '_';
7381
$view->vars['largefile_field'] = $form->getConfig()->getName() . 'Name';
82+
$view->vars['largefile_field_original'] = $form->getConfig()->getName() . 'OriginalName';
7483
$view->vars['label'] = $options['label'];
7584
$view->vars['largefile_media'] = $options['media'];
7685
$view->vars['mimeTypesMessage'] = $options['mimeTypesMessage'];

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ $builder
6969
'media' => 'video',
7070
'mimeTypesMessage' => "Upload only mp4",
7171
'maxSizeMessage' => "Maximum size is 40 MB",
72+
'previewContainerId' => "previewVideo",
7273
],
7374
)
7475
```
@@ -79,6 +80,9 @@ The field will be displayed as an input file styled as a button using bootstrap
7980
- `media`: refers to the mapping in OneupUploaderBundle's configuration
8081
- `mimeTypesMessage`: Localized error message to display for incorrect mime type input
8182
- `maxSizeMessage`: Localized error message to display if upload file is larger than the maximum size allowed
83+
- `previewContainerId`: Optional. Id of the video tag container which source will be updated upon upload
8284

83-
The bundle will add an extra hidden field to the form with the name of the file field appended with the string "Name" (eg: videoFileName).
84-
This field can be used by the application to link the uploaded filename with an entity.
85+
The bundle will add two extra hidden fields to the form:
86+
- a field with the name of the file field appended with the string "Name" (eg: videoFileName).
87+
- a field with the name of the file field appended with the string "OriginalName" (eg: videoOriginalFileName).
88+
These fields can be used by the application to link the uploaded filename with an entity.

Resources/config/services.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ services:
22

33
webridge_largefile.upload_listener:
44
class: Webridge\LargeFileBundle\EventListener\UploadListener
5-
arguments: ["uploads%upload_video_rel_directory%"]
5+
arguments: []
66
tags:
77
- { name: kernel.event_listener, event: oneup_uploader.post_persist, method: onUpload }
88

Resources/public/js/largefile.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@ var LargeFile = (function() {
2020
},
2121
success: function (files, data, xhr) {
2222
var inputField = document.getElementById(this.fileInput[0].id);
23-
var largeFileField = document.getElementById(inputField.getAttribute('data-largefile-field'));
23+
var largeFileField = document.getElementById(
24+
inputField.getAttribute('data-largefile-field')
25+
);
26+
var largeFileFieldOriginal = document.getElementById(
27+
inputField.getAttribute('data-largefile-field-original')
28+
);
2429

2530
getErrorPlaceHolder(inputField).html('');
2631

@@ -31,8 +36,8 @@ var LargeFile = (function() {
3136
uploadFinished(inputField, false);
3237
return;
3338
}
34-
3539
largeFileField.value = files.files[0].name;
40+
largeFileFieldOriginal.value = files.files[0].originalName;
3641
//remove the required attribute of the input field
3742
//to allow form submission
3843
inputField.removeAttribute('required');

Resources/views/Form/largefile.html.twig

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
{{ form_widget(
1717
form,
1818
{'attr': {
19-
'class': form.vars.attr.class ~ ' largefile',
20-
'data-largefile-field': largefile_field,
19+
'class': (form.vars.attr is empty)?'largefile':form.vars.attr.class ~ ' largefile',
20+
'data-largefile-field': view_id_prefix ~ largefile_field,
21+
'data-largefile-field-original': view_id_prefix ~ largefile_field_original,
2122
'data-mimeTypesMessage': mimeTypesMessage,
2223
'data-maxSizeMessage': maxSizeMessage,
2324
'data-url': oneup_uploader_endpoint(largefile_media),
@@ -28,22 +29,29 @@
2829
{{ form_widget(
2930
attribute(form.parent, largefile_field),
3031
{
31-
'id': largefile_field
32+
'id': view_id_prefix ~ largefile_field
33+
}
34+
)
35+
}}
36+
{{ form_widget(
37+
attribute(form.parent, largefile_field_original),
38+
{
39+
'id': view_id_prefix ~ largefile_field_original
3240
}
3341
)
3442
}}
3543
</span>
3644

3745
{% endspaceless %}
3846

39-
<div class="error">
47+
<div class="error largefile-error">
4048
<ul>
41-
<li id="{{largefile_field}}_error">
49+
<li id="{{view_id_prefix ~ largefile_field}}_error">
4250
</li>
4351
</ul>
4452
</div>
4553

46-
<div id="{{largefile_field}}_progress" class="largefile_progress progress">
54+
<div id="{{view_id_prefix ~ largefile_field}}_progress" class="largefile_progress progress">
4755
<span class="bar progress-bar"></span>
4856
</div>
4957

0 commit comments

Comments
 (0)