Если вы после решения, основанного на обещании, это код @ Dmitri, адаптированный для этого:
function getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
}
var file = document.querySelector('#files > input[type="file"]').files[0];
getBase64(file).then(
data => console.log(data)
);
Можно использовать команда сокращения для достигания каждого из этих 3 'полей', например:
$ echo "system-source-yyyymmdd.dat" | cut -d'-' -f2
source
"-d" определяет, что разделитель, "-f" определяет количество поля, которого Вы требуете
Хорошее и изящное (в моем уме :-) с помощью только созданный-ins должен поместить его в массив
var='system-source-yyyymmdd.dat'
parts=(${var//-/ })
Затем можно найти части в массиве...
echo ${parts[0]} ==> system
echo ${parts[1]} ==> source
echo ${parts[2]} ==> yyyymmdd.dat
Протест: это не будет работать, если имя файла будет содержать "странные" символы, такие как пространство, или, небеса запрещают, кавычки, одинарные левые кавычки...
В зависимости от Ваших потребностей awk более гибок, чем сокращение. Первый задира:
# echo "system-source-yyyymmdd.dat" \
|awk -F- '{printf "System: %s\nSource: %s\nYear: %s\nMonth: %s\nDay: %s\n",
$1,$2,substr($3,1,4),substr($3,5,2),substr($3,7,2)}'
System: system
Source: source
Year: yyyy
Month: mm
Day: dd
проблема состоит в том, что описание awk как 'более гибкое', конечно, похоже на вызов iPhone расширенный сотовый телефон;-)
Используйте команду cut
.
, например,
echo "system-source-yyyymmdd.dat" | cut -f1 -d'-'
извлечет первый бит.
Измените значение параметра -f
, чтобы получить соответствующие детали.
Вот руководство по команде Cut .
Другой метод заключается в использовании внутренних инструментов синтаксического анализа оболочки, что позволяет избежать затрат на создание дочерних процессов:
oIFS=$IFS IFS=- file="system-source-yyyymmdd.dat" set $file IFS=$oIFS echo "Source is $2"
Самый простой (и лучший способ ИМО) сделать это - просто использовать read
:
$ IFS=-. read system source date ext << EOF
> foo-bar-yyyymmdd.dat
> EOF
$ echo $system
foo
$ echo $source $date $ext
bar yyyymmdd dat
Существует множество вариаций на эту тему, многие из которых зависят от оболочки:
bash$ IFS=-. read system source date ext <<< foo-bar-yyyymmdd.dat
echo "$name" | { IFS=-. read system source date ext
echo In all shells, the variables are set here...; }
echo but only in some shells do they retain their value here