mirror of
https://github.com/Karaka-Management/oms-Media.git
synced 2026-01-24 23:08:41 +00:00
Fix file upload
This commit is contained in:
parent
d93224fc31
commit
822cd3ebbe
|
|
@ -29,25 +29,32 @@
|
|||
|
||||
const self = this;
|
||||
|
||||
if (!form.querySelector('input[type=file]')|| !document.querySelector('input[type=file][form=' + form.id + ']')) {
|
||||
if (!form.querySelector('input[type=file]') || !document.querySelector('input[type=file][form=' + form.id + ']')) {
|
||||
try {
|
||||
// Inject media upload into form view
|
||||
this.app.uiManager.getFormManager().get(form.id).injectSubmit(function (e, requestId, requestGroup)
|
||||
this.app.uiManager.getFormManager().get(form.id).injectSubmit(function (e, requestId)
|
||||
{
|
||||
/** global: jsOMS */
|
||||
let fileFields = e.querySelectorAll('input[type=file]'),
|
||||
let fileFields = document.querySelectorAll(
|
||||
'#' + e.id + ' input[type=file], '
|
||||
+ 'input[form=' + e.id + '][type=file]'
|
||||
),
|
||||
uploader = new jsOMS.Modules.Models.Media.Upload(self.app.responseManager);
|
||||
|
||||
uploader.setSuccess(e.id, function (type, response)
|
||||
{
|
||||
e.querySelector('input[type=file]+input[type=hidden]').value = JSON.stringify(response.uploads);
|
||||
self.app.eventManager.trigger(requestGroup, requestId);
|
||||
document.querySelector('input[form=' + e.id + '][type=file]+input[form=' + e.id + '][type=hidden]').value = JSON.stringify(response);
|
||||
self.app.eventManager.trigger(form.id, requestId);
|
||||
});
|
||||
|
||||
uploader.setUri('{/base}/{/lang}/api/media');
|
||||
|
||||
for (let i = 0; i < fileFields.length; i++) {
|
||||
for (let j = 0; j < fileFields[i].files.length; j++) {
|
||||
const length = fileFields.length;
|
||||
let fileLength = 0;
|
||||
|
||||
for (let i = 0; i < length; i++) {
|
||||
fileLength = fileFields[i].files.length;
|
||||
for (let j = 0; j < fileLength; j++) {
|
||||
uploader.addFile(fileFields[i].files[j]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ class ApiController extends Controller
|
|||
$uploads = $this->uploadFiles(
|
||||
$request->getFiles(),
|
||||
$request->getHeader()->getAccount(),
|
||||
(string) ($request->getData('path') ?? __DIR__ . '/../../Modules/Media/Files')
|
||||
(string) ($request->getData('path') ?? __DIR__ . '/../../../Modules/Media/Files')
|
||||
);
|
||||
|
||||
$ids = [];
|
||||
|
|
@ -70,7 +70,7 @@ class ApiController extends Controller
|
|||
}
|
||||
|
||||
$response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true);
|
||||
$response->set($request->getUri()->__toString(), [['uploads' => $ids, 'type' => 'UI']]);
|
||||
$response->set($request->getUri()->__toString(), $ids);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -117,7 +117,7 @@ class ApiController extends Controller
|
|||
|
||||
public static function createMediaPath(string $basePath = 'Modules/Media/Files') : string
|
||||
{
|
||||
$rndPath = str_pad(dechex(rand(0, 65535)), 4, '0', STR_PAD_LEFT);
|
||||
$rndPath = \str_pad(\dechex(\mt_rand(0, 65535)), 4, '0', STR_PAD_LEFT);
|
||||
return $basePath . '/' . $rndPath[0] . $rndPath[1] . '/' . $rndPath[2] . $rndPath[3];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,9 +66,9 @@
|
|||
{
|
||||
// TODO: validate file type + file size
|
||||
|
||||
let request = new jsOMS.Message.Request.Request(),
|
||||
formData = new FormData(),
|
||||
self = this;
|
||||
const request = new jsOMS.Message.Request.Request(),
|
||||
formData = new FormData(),
|
||||
self = this;
|
||||
|
||||
this.files.forEach(function (element, index)
|
||||
{
|
||||
|
|
@ -76,23 +76,22 @@
|
|||
});
|
||||
|
||||
request.setData(formData);
|
||||
request.setType(jsOMS.Message.Request.RequestType.RAW);
|
||||
request.setType(jsOMS.Message.Request.RequestType.FILE);
|
||||
request.setUri(this.uri);
|
||||
request.setMethod(jsOMS.Message.Request.RequestMethod.POST);
|
||||
request.setRequestHeader('HTTP_X_REQUESTED_WITH', 'XMLHttpRequest');
|
||||
request.setSuccess(function (xhr)
|
||||
{
|
||||
try {
|
||||
let response = JSON.parse(xhr.response);
|
||||
const response = JSON.parse(xhr.response);
|
||||
|
||||
for (let k = 0; k < response.length; ++k) {
|
||||
if (!self.success[formId]) {
|
||||
self.responseManager.run(response[k].type, response[k]);
|
||||
} else {
|
||||
self.success[formId](response[k].type, response[k]);
|
||||
}
|
||||
if (!self.success[formId]) {
|
||||
self.responseManager.run(null, response);
|
||||
} else {
|
||||
self.success[formId](null, response);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
jsOMS.Log.Logger.instance.error(e);
|
||||
jsOMS.Log.Logger.instance.error('Invalid media upload response: ' + xhr.response);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ class UploadFile
|
|||
}
|
||||
|
||||
if (!\is_dir($path)) {
|
||||
Directory::create($path, 0655, true);
|
||||
Directory::create($path, 0755, true);
|
||||
}
|
||||
|
||||
if (!\is_uploaded_file($f['tmp_name'])) {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<header><h1><?= $this->getHtml('Media') ?></h1></header>
|
||||
|
||||
<div class="inner">
|
||||
<form>
|
||||
<form id="<?= $this->form; ?>-upload">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr><td><label for="iMedia"><?= $this->getHtml('Media') ?></label>
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
<tr><td><label for="iUpload"><?= $this->getHtml('Upload', 'Media') ?></label>
|
||||
<tr><td>
|
||||
<input type="file" id="iUpload" name="upload" form="<?= $this->form; ?>" multiple>
|
||||
<input form="<?= $this->form; ?>" type="hidden" name="type"><td>
|
||||
<input form="<?= $this->form; ?>" type="hidden" name="media-list"><td>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user