Add CSP file uploads
This commit is contained in:
64
js/lib/upload.js
Normal file
64
js/lib/upload.js
Normal file
@@ -0,0 +1,64 @@
|
||||
import Azure from 'azure-storage'
|
||||
|
||||
class AzureUploader {
|
||||
constructor(sasToken) {
|
||||
this.sasToken = sasToken.token
|
||||
}
|
||||
|
||||
async upload(file, objectName) {
|
||||
const blobService = Azure.createBlobServiceWithSas(
|
||||
'https://atat.blob.core.windows.net',
|
||||
this.sasToken
|
||||
)
|
||||
const fileReader = new FileReader()
|
||||
const options = {
|
||||
contentSettings: {
|
||||
contentType: 'application/pdf',
|
||||
},
|
||||
metadata: {
|
||||
filename: file.name,
|
||||
},
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
fileReader.addEventListener('load', function(f) {
|
||||
blobService.createBlockBlobFromText(
|
||||
'task-order-pdfs',
|
||||
`${objectName}.pdf`,
|
||||
f.target.result,
|
||||
options,
|
||||
function(err, result) {
|
||||
if (err) {
|
||||
reject(err)
|
||||
} else {
|
||||
resolve(result)
|
||||
}
|
||||
}
|
||||
)
|
||||
})
|
||||
fileReader.readAsText(file)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
class AwsUploader {
|
||||
constructor(presignedPost) {
|
||||
this.presignedPost = presignedPost
|
||||
}
|
||||
|
||||
async upload(file, objectName) {
|
||||
const form = new FormData()
|
||||
Object.entries(this.presignedPost.fields).forEach(([k, v]) => {
|
||||
form.append(k, v)
|
||||
})
|
||||
form.append('file', file)
|
||||
form.set('x-amz-meta-filename', file.name)
|
||||
|
||||
return fetch(this.presignedPost.url, {
|
||||
method: 'POST',
|
||||
body: form,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export const buildUploader = token => new AzureUploader(token)
|
Reference in New Issue
Block a user