Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
synergy-components
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Irina Oleynik
synergy-components
Commits
0866c28c
Commit
0866c28c
authored
Feb 21, 2020
by
Sergey Antonovich
🇯🇵
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Example upload file to form synergy
parent
8128f1bc
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
165 additions
and
0 deletions
+165
-0
doc/scripts/src/uploadFile.js
doc/scripts/src/uploadFile.js
+165
-0
No files found.
doc/scripts/src/uploadFile.js
0 → 100644
View file @
0866c28c
const
auth
=
`Basic
${
btoa
(
unescape
(
encodeURIComponent
(
'
yandexphp:1
'
)))}
`
;
/**
* Загружаем файлы пользователя из вне в платформу Synergy
*
* @param {string} nodeUUID - Идентификатор ноды файла по форме в хранилище
* @param {string | int} dataUUID - Идентификатор данных по форме
* @param {formData} data - файл(ы) в объекте formData
* @return {string} fileId
*/
const
uploadFile
=
async
(
nodeUUID
,
dataUUID
,
data
)
=>
{
try
{
const
url
=
window
.
location
.
origin
+
'
/Synergy/rest/api/asffile?
'
+
jQuery
.
param
({
type
:
'
attachment
'
,
node
:
nodeUUID
||
''
,
data
:
dataUUID
||
''
});
return
await
jQuery
.
ajax
({
url
,
type
:
'
POST
'
,
beforeSend
:
xhr
=>
xhr
.
setRequestHeader
(
"
Authorization
"
,
auth
),
data
,
cache
:
false
,
contentType
:
false
,
processData
:
false
});
}
catch
(
e
){
console
.
error
(
e
);
return
e
.
message
;
}
}
/**
* Получаем информацию о файле по его fileId
*
* @param {string} fileId - Идентификатор файла
* @return {object}
*/
const
getDescriptionByFileId
=
async
fileId
=>
{
try
{
const
url
=
window
.
location
.
origin
+
`/Synergy/rest/api/storage/description?elementID=
${
fileId
||
''
}
`
;
return
await
jQuery
.
ajax
({
url
,
beforeSend
:
xhr
=>
xhr
.
setRequestHeader
(
"
Authorization
"
,
auth
),
dataType
:
'
json
'
});
}
catch
(
e
){
console
.
error
(
e
);
return
e
.
message
;
}
}
/**
* Получаем данные по форме
*
* @param {string | int} dataUUID - Идентификатор данных по форме
* @return {object}
*/
const
getFormDataByDataId
=
async
dataUUID
=>
{
try
{
const
url
=
window
.
location
.
origin
+
`/Synergy/rest/api/asforms/data/
${
dataUUID
}
`
;
return
await
jQuery
.
ajax
({
url
,
beforeSend
:
xhr
=>
xhr
.
setRequestHeader
(
"
Authorization
"
,
auth
),
dataType
:
'
json
'
});
}
catch
(
e
){
console
.
error
(
e
);
return
e
.
message
;
}
}
/**
* Сохранить файл в компоненте файл на форме
*
* @param {string | int} dataUUID - Идентификатор данных по форме
* @param {string} componentId - Идентификатор компонента файл на форме
* @param {object} fileDescription - Данные из API "rest/api/storage/description"
* @return {object}
*/
const
setFileToForm
=
async
(
dataUUID
,
componentId
,
fileDescription
)
=>
{
try
{
const
url
=
window
.
location
.
origin
+
`/Synergy/rest/api/asforms/data/merge`
;
const
{
name
:
value
,
identifier
:
key
}
=
fileDescription
;
const
{
uuid
}
=
await
jQuery
.
ajax
({
url
,
type
:
'
POST
'
,
beforeSend
:
xhr
=>
xhr
.
setRequestHeader
(
"
Authorization
"
,
auth
),
headers
:
{
'
Content-type
'
:
'
application/json
'
},
dataType
:
'
json
'
,
data
:
JSON
.
stringify
({
uuid
:
dataUUID
,
data
:
[{
id
:
componentId
,
type
:
'
file
'
,
key
,
value
}]
})
});
return
!!
uuid
;
}
catch
(
e
){
console
.
error
(
e
);
return
e
.
message
;
}
}
/**
* Examle use keys - upload file`s to Synergy platform
*/
const
nodeElement
=
document
.
createElement
(
'
input
'
);
nodeElement
.
type
=
'
file
'
;
nodeElement
.
onchange
=
async
e
=>
{
const
{
files
}
=
e
.
target
;
if
(
files
&&
files
.
length
){
const
data
=
new
FormData
();
const
file
=
files
[
0
];
data
.
append
(
'
file
'
,
file
);
// 17160 - dataUUID записи реестра
const
formData
=
await
getFormDataByDataId
(
17160
);
if
(
formData
&&
Object
.
keys
(
formData
).
length
){
const
fileId
=
await
uploadFile
(
formData
.
nodeUUID
,
formData
.
uuid
,
data
);
if
(
fileId
){
const
{
errorCode
,
errorMessage
,
name
,
identifier
}
=
await
getDescriptionByFileId
(
fileId
);
if
(
+
errorCode
!==
13
){
const
isSaved
=
await
setFileToForm
(
formData
.
uuid
,
'
myFileCompId
'
,
({
name
,
identifier
}));
if
(
isSaved
){
console
.
log
(
`Файл "
${
file
.
name
}
" - успешно загружен и установлен в компонент файл по форме`
);
}
else
{
console
.
error
(
`Не удалось добавить файл "
${
file
.
name
}
" в компонент файл по форме.`
);
}
}
else
{
console
.
error
(
errorMessage
);
}
return
;
}
}
console
.
error
(
`Произошла неизвестная ошибка, не удалось загрузить файл
${
file
.
name
}
`
);
}
nodeElement
.
remove
();
}
nodeElement
.
click
();
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment