如何使用 UploadCare 获取上传图像的自定义存储文件名?
How can I get the custom storage filename for uploaded images using UploadCare?
我想用自己的S3存储,显示刚刚上传的图片。如何获取上传到 S3 的文件名?
例如,我可以将 jpg 图像上传到 UploadCare。
这是我可以获得的输出:
fileInfo.cdnUrl: "https://ucarecdn.com/6314bead-0404-4279-9462-fecc927935c9/"
fileInfo.name: "0 (3).jpg"
但是如果我检查我的 S3 存储桶,这是实际上传到 S3 的文件名:https://localdevauctionsite-us.s3.us-west-2.amazonaws.com/6314bead-0404-4279-9462-fecc927935c9/03.jpg
这是我目前的 javascript:
var widget = uploadcare.Widget('[role=uploadcare-uploader]');
widget.onChange(group => {
group.files().forEach(file => {
file.done(fileInfo => {
// Try to list the file from aws s3
console.log('CDN url:', fileInfo.cdnUrl);
//https://uploadcare.com/docs/file_uploader_api/files_uploads/
console.log('File name: ', fileInfo.name);
});
});
});
文件名在复制到 S3 之前经过清理,因此输出文件名只能包含以下字符:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
以下函数可用于获取经过清理的文件名:
function sanitize(filename) {
var extension = '.' + filename.split('.').pop();
var name = filename.substring(0, filename.length - extension.length);
return name.replace(/[^A-Za-z0-9_]+/g, '') + extension;
}
最终的 S3 URL 可以由 S3 基础 URL、文件 UUID(您可以从 fileInfo
对象中获取)和上传的经过清理的名称组成文件。
我想用自己的S3存储,显示刚刚上传的图片。如何获取上传到 S3 的文件名? 例如,我可以将 jpg 图像上传到 UploadCare。 这是我可以获得的输出: fileInfo.cdnUrl: "https://ucarecdn.com/6314bead-0404-4279-9462-fecc927935c9/" fileInfo.name: "0 (3).jpg"
但是如果我检查我的 S3 存储桶,这是实际上传到 S3 的文件名:https://localdevauctionsite-us.s3.us-west-2.amazonaws.com/6314bead-0404-4279-9462-fecc927935c9/03.jpg
这是我目前的 javascript:
var widget = uploadcare.Widget('[role=uploadcare-uploader]');
widget.onChange(group => {
group.files().forEach(file => {
file.done(fileInfo => {
// Try to list the file from aws s3
console.log('CDN url:', fileInfo.cdnUrl);
//https://uploadcare.com/docs/file_uploader_api/files_uploads/
console.log('File name: ', fileInfo.name);
});
});
});
文件名在复制到 S3 之前经过清理,因此输出文件名只能包含以下字符:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
以下函数可用于获取经过清理的文件名:
function sanitize(filename) {
var extension = '.' + filename.split('.').pop();
var name = filename.substring(0, filename.length - extension.length);
return name.replace(/[^A-Za-z0-9_]+/g, '') + extension;
}
最终的 S3 URL 可以由 S3 基础 URL、文件 UUID(您可以从 fileInfo
对象中获取)和上传的经过清理的名称组成文件。