5
5
6
6
package com .liferay .dynamic .data .mapping .form .web .internal .portlet .action ;
7
7
8
+ import com .liferay .document .library .configuration .DLFileEntryMimeTypeConfiguration ;
8
9
import com .liferay .document .library .kernel .exception .FileExtensionException ;
10
+ import com .liferay .document .library .kernel .exception .FileMimeTypeException ;
9
11
import com .liferay .document .library .kernel .exception .FileNameException ;
10
12
import com .liferay .document .library .kernel .exception .FileSizeException ;
11
13
import com .liferay .document .library .kernel .exception .InvalidFileException ;
12
14
import com .liferay .document .library .kernel .model .DLFileEntry ;
15
+ import com .liferay .document .library .kernel .util .DLValidator ;
13
16
import com .liferay .dynamic .data .mapping .constants .DDMActionKeys ;
14
17
import com .liferay .dynamic .data .mapping .constants .DDMFormConstants ;
15
18
import com .liferay .dynamic .data .mapping .constants .DDMPortletKeys ;
22
25
import com .liferay .object .model .ObjectFieldSetting ;
23
26
import com .liferay .object .service .ObjectFieldSettingLocalService ;
24
27
import com .liferay .petra .string .StringPool ;
28
+ import com .liferay .portal .configuration .module .configuration .ConfigurationProvider ;
25
29
import com .liferay .portal .kernel .exception .PortalException ;
26
30
import com .liferay .portal .kernel .io .unsync .UnsyncByteArrayInputStream ;
27
31
import com .liferay .portal .kernel .json .JSONObject ;
@@ -96,6 +100,9 @@ protected void doProcessAction(
96
100
@ Reference
97
101
private CompanyLocalService _companyLocalService ;
98
102
103
+ @ Reference
104
+ private ConfigurationProvider _configurationProvider ;
105
+
99
106
private final DDMFormUploadFileEntryHandler _ddmFormUploadFileEntryHandler =
100
107
new DDMFormUploadFileEntryHandler ();
101
108
private final DDMFormUploadResponseHandler _ddmFormUploadResponseHandler =
@@ -104,6 +111,9 @@ protected void doProcessAction(
104
111
@ Reference (target = "(upload.response.handler.system.default=true)" )
105
112
private UploadResponseHandler _defaultUploadResponseHandler ;
106
113
114
+ @ Reference
115
+ private DLValidator _dlValidator ;
116
+
107
117
@ Reference
108
118
private Language _language ;
109
119
@@ -129,6 +139,10 @@ public FileEntry upload(UploadPortletRequest uploadPortletRequest)
129
139
File file = null ;
130
140
131
141
try {
142
+ ThemeDisplay themeDisplay =
143
+ (ThemeDisplay )uploadPortletRequest .getAttribute (
144
+ WebKeys .THEME_DISPLAY );
145
+
132
146
InputStream inputStream = uploadPortletRequest .getFileAsStream (
133
147
"file" );
134
148
@@ -140,6 +154,11 @@ public FileEntry upload(UploadPortletRequest uploadPortletRequest)
140
154
141
155
String fileName = uploadPortletRequest .getFileName ("file" );
142
156
157
+ String mimeType = MimeTypesUtil .getContentType (file , fileName );
158
+
159
+ _dlValidator .validateFileMimeType (
160
+ themeDisplay .getCompanyId (), mimeType );
161
+
143
162
DDMFormUploadValidator .validateFileSize (file , fileName );
144
163
145
164
long objectFieldId = ParamUtil .getLong (
@@ -155,9 +174,7 @@ public FileEntry upload(UploadPortletRequest uploadPortletRequest)
155
174
ParamUtil .getLong (uploadPortletRequest , "formInstanceId" ),
156
175
ParamUtil .getLong (uploadPortletRequest , "groupId" ),
157
176
ParamUtil .getLong (uploadPortletRequest , "folderId" ), file ,
158
- fileName , MimeTypesUtil .getContentType (file , fileName ),
159
- (ThemeDisplay )uploadPortletRequest .getAttribute (
160
- WebKeys .THEME_DISPLAY ));
177
+ fileName , mimeType , themeDisplay );
161
178
}
162
179
finally {
163
180
FileUtil .delete (file );
@@ -252,6 +269,19 @@ public JSONObject onFailure(
252
269
DDMFormUploadValidator .getGuestUploadFileExtensions (),
253
270
StringPool .COMMA_AND_SPACE ));
254
271
}
272
+ else if (portalException instanceof FileMimeTypeException ) {
273
+ DLFileEntryMimeTypeConfiguration
274
+ dlFileEntryMimeTypeConfiguration =
275
+ _configurationProvider .getCompanyConfiguration (
276
+ DLFileEntryMimeTypeConfiguration .class ,
277
+ themeDisplay .getCompanyId ());
278
+
279
+ errorMessage = themeDisplay .translate (
280
+ "please-enter-a-file-with-a-valid-mime-type-x" ,
281
+ StringUtil .merge (
282
+ dlFileEntryMimeTypeConfiguration .fileMimeTypes (),
283
+ StringPool .COMMA_AND_SPACE ));
284
+ }
255
285
else if (portalException instanceof FileNameException ) {
256
286
errorMessage = themeDisplay .translate (
257
287
"please-enter-a-file-with-a-valid-file-name" );
0 commit comments