我正在使用ng-file-upload在网络应用中上传图片。
上传过程效果很好,但是当我尝试使用momentJS为每个文件指定一个唯一的名称时,它将不会自动保留格式并保存而不使用文件扩展名。
例如, image.jpg将成为12-07-2016-23-36-44 。
我设法使用以下代码修复此问题,但是它会将所有图像保存到JPG,即使它们不是(PNG,GIF ...)
$scope.uniquelogo = moment().format('DD-MM-YYYY-HH-mm-ss') + '.jpg';
Upload.upload({
url: 'upload.php',
data: {
file: file,
name: Upload.rename(file, $scope.uniquelogo)
}
我如何使用Upload.rename()并保持原始文件格式?
答案 0 :(得分:2)
您可以从原始文件名中检索扩展名,然后使用该扩展名而不是.jpg
。
function getFileExtension(filename) {
return filename
.split('.') // Split the string on every period
.slice(-1)[0]; // Get the last item from the split
}
$scope.uniquelogo = moment().format('DD-MM-YYYY-HH-mm-ss');
Upload.upload({
url: 'upload.php',
data: {
file: file,
name: Upload.rename(file, $scope.uniquelogo + getFileExtension(file.name))
}
...
答案 1 :(得分:1)
您可以访问类型属性以获取扩展名但例如:
因此,您可以使用string
方法String.prototype.substring()
+ String.prototype.lastIndexOf()
来获取您想要的部分:
name: Upload.rename(file, $scope.uniquelogo + file.name.substring(file.type.lastIndexOf('/'), file.name.length).replace('/', '.'));
注意:我使用替换方法替换"/"
的{{1}},但您也可以手动执行(只需添加"."
我希望它有所帮助!