diff --git a/src/api/ADempiere/file-management/resource-reference.ts b/src/api/ADempiere/file-management/resource-reference.ts
index 8602aaa105..757faebc9d 100644
--- a/src/api/ADempiere/file-management/resource-reference.ts
+++ b/src/api/ADempiere/file-management/resource-reference.ts
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-
+import { config } from '@/utils/ADempiere/config'
// Get Instance for connection
import { request } from '@/utils/ADempiere/request'
@@ -27,6 +27,42 @@ import {
// Utils and Helper Methods
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
+/**
+ * Presigned Url
+ * @param {string} file_name
+ */
+export function requestPresignedUrl({
+ fileName
+}) {
+ return request({
+ url: `${config.adempiere.resource.url}/presigned-url/${fileName}`,
+ method: 'get',
+ isWithoutAuthorization: true,
+ params: {
+ file_name: fileName
+ }
+ })
+}
+
+/**
+ * Upload File
+ * @param {string} url
+ */
+
+export function requestUploadFile({
+ url,
+ file
+}) {
+ return request({
+ url: `${url}`,
+ method: 'put',
+ isWithoutAuthorization: true,
+ body: {
+ file
+ }
+ })
+}
+
/**
* Set resource reference
* @param {number} resourceId
diff --git a/src/components/ADempiere/FieldDefinition/FieldImage.vue b/src/components/ADempiere/FieldDefinition/FieldImage.vue
index df26a0747a..95d427302c 100644
--- a/src/components/ADempiere/FieldDefinition/FieldImage.vue
+++ b/src/components/ADempiere/FieldDefinition/FieldImage.vue
@@ -169,11 +169,12 @@ import { config } from '@/utils/ADempiere/config'
import { BEARER_TYPE } from '@/utils/auth'
import { MIME_TYPE_IMAGE } from '@/utils/ADempiere/resource/image.ts'
import { UUID_PATTERN } from '@/utils/ADempiere/recordUtil'
-import { RESOURCE_TYPE_IMAGE } from '@/utils/ADempiere/resource'
+// import { RESOURCE_TYPE_IMAGE } from '@/utils/ADempiere/resource'
// API Request Methods
import {
- requestSetResourceReference,
+ requestPresignedUrl,
+ // requestSetResourceReference,
requestDeleteResourceReference
} from '@/api/ADempiere/file-management/resource-reference.ts'
@@ -251,7 +252,6 @@ export default {
// // height: 200,
// // operation: 'resize'
// // })
- // console.log(blobImage)
// return blobImage.href
// },
endPointUploadResource() {
@@ -328,34 +328,55 @@ export default {
reject(false)
return
}
- requestSetResourceReference({
- resourceType: RESOURCE_TYPE_IMAGE,
- id: this.value || -1,
- fileName: file.name,
- fileSize: file.size
- }).then(response => {
- if (response.code >= 400) {
- reject(response)
+ requestPresignedUrl({
+ fileName: file.name
+ })
+ .then(responseUrl => {
+ fetch(responseUrl, {
+ method: 'PUT',
+ body: file
+ }).then(() => {
+ // If multiple files are uploaded, append upload status on the next line.
+ }).catch((e) => {
+ console.error(e)
+ })
+ })
+ .catch(error => {
+ showMessage({
+ message: error.message || error.result || lang.t('component.attachment.error'),
+ type: 'error'
+ })
+ reject(error)
return
- }
-
- this.fileResource = response
- this.additionalData = {
- id: response.id
- // file_name: response.file_name
- }
-
- this.value = response.resource_id
- this.displayedValue = response.file_name
- this.preHandleChange(this.value)
- resolve(true)
- }).catch(error => {
- showMessage({
- message: error.message || error.result || lang.t('component.attachment.error'),
- type: 'error'
})
- reject(error)
- })
+ // requestSetResourceReference({
+ // resourceType: RESOURCE_TYPE_IMAGE,
+ // id: this.value || -1,
+ // fileName: file.name,
+ // fileSize: file.size
+ // }).then(response => {
+ // if (response.code >= 400) {
+ // reject(response)
+ // return
+ // }
+
+ // this.fileResource = response
+ // this.additionalData = {
+ // id: response.id
+ // // file_name: response.file_name
+ // }
+
+ // this.value = response.resource_id
+ // this.displayedValue = response.file_name
+ // this.preHandleChange(this.value)
+ // resolve(true)
+ // }).catch(error => {
+ // showMessage({
+ // message: error.message || error.result || lang.t('component.attachment.error'),
+ // type: 'error'
+ // })
+ // reject(error)
+ // })
})
},
handleChange(file, fileList) {
diff --git a/src/components/ADempiere/PanelInfo/Component/AttachmentManager/uploadResource.vue b/src/components/ADempiere/PanelInfo/Component/AttachmentManager/uploadResource.vue
index 76190d326a..db39d6f763 100644
--- a/src/components/ADempiere/PanelInfo/Component/AttachmentManager/uploadResource.vue
+++ b/src/components/ADempiere/PanelInfo/Component/AttachmentManager/uploadResource.vue
@@ -17,54 +17,49 @@
-->
-
+
diff --git a/src/utils/ADempiere/request.js b/src/utils/ADempiere/request.js
index 5b1074e8dc..6cff81516c 100644
--- a/src/utils/ADempiere/request.js
+++ b/src/utils/ADempiere/request.js
@@ -42,13 +42,15 @@ export function request(requestValues) {
if (!isEmptyValue(config.adempiere.api.timeout) && config.adempiere.api.timeout > 0) {
requestValues.timeout = config.adempiere.api.timeout
}
-
const token = getToken()
let bearerToken = token
// Json Web Token
if (!isEmptyValue(bearerToken) && !bearerToken.startsWith(BEARER_TYPE)) {
bearerToken = `${BEARER_TYPE} ${token}`
}
+ if (requestValues.isWithoutAuthorization) {
+ bearerToken = undefined
+ }
Object.assign(requestValues, {
headers: {
Authorization: bearerToken