From 24e218f7e7ae0cc0b0b57968101be0fa56abe9a0 Mon Sep 17 00:00:00 2001 From: yang-jingbo1985 Date: Tue, 5 Dec 2023 18:28:35 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=AE=9E=E7=8E=B0list=20file=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=94=AF=E6=8C=81=20mimetype=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yang-jingbo1985 --- .../js/src/mod_fs/properties/listfile.cpp | 98 ++++++++--- .../kits/js/src/mod_fs/properties/listfile.h | 11 +- .../src/mod_fs/properties/prop_n_exporter.cpp | 1 + utils/common/include/mimetype.h | 155 ++++++++++++++++++ 4 files changed, 236 insertions(+), 29 deletions(-) create mode 100644 utils/common/include/mimetype.h diff --git a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp index e046e1745..2656e9701 100755 --- a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp @@ -15,6 +15,7 @@ #include "listfile.h" +#include #include #include #include @@ -26,6 +27,8 @@ #include "file_utils.h" #include "filemgmt_libhilog.h" +#include "mimetype.h" + namespace OHOS::FileManagement::ModuleFileIO { using namespace std; using namespace OHOS::FileManagement::LibN; @@ -50,17 +53,30 @@ static bool CheckSuffix(const vector &suffixs) return true; } +static bool GetArray(const NVal &argv, const string condition, vector &conditions) +{ + bool ret = false; + tie(ret, conditions, ignore) = argv.GetProp(condition).ToStringArray(); + if (!ret) { + HILOGE("Failed to get %{public}s prop.", condition.c_str()); + return false; + } + if (conditions.empty()) { + HILOGE("Invalid %{public}s.", condition.c_str()); + return false; + } + return true; +} + static bool GetFileFilterParam(const NVal &argv, FileFilter *filter) { bool ret = false; if (argv.HasProp("suffix") && !argv.GetProp("suffix").TypeIs(napi_undefined)) { vector suffixs; - tie(ret, suffixs, ignore) = argv.GetProp("suffix").ToStringArray(); - if (!ret) { - HILOGE("Failed to get suffix prop."); + if (!GetArray(argv, "suffix", suffixs)) { return false; } - if (!CheckSuffix(suffixs) || suffixs.size() == 0) { + if (!CheckSuffix(suffixs)) { HILOGE("Invalid suffix."); return false; } @@ -68,16 +84,17 @@ static bool GetFileFilterParam(const NVal &argv, FileFilter *filter) } if (argv.HasProp("displayName") && !argv.GetProp("displayName").TypeIs(napi_undefined)) { vector displayNames; - tie(ret, displayNames, ignore) = argv.GetProp("displayName").ToStringArray(); - if (!ret) { - HILOGE("Failed to get displayname prop."); + if (!GetArray(argv, "displayName", displayNames)) { return false; } - if (displayNames.size() == 0) { - HILOGE("Invalid displayName."); + filter->SetDisplayName(displayNames); + } + if (argv.HasProp("mimeType") && !argv.GetProp("mimeType").TypeIs(napi_undefined)) { + vector mimeTypes; + if (!GetArray(argv, "mimeType", mimeTypes)) { return false; } - filter->SetDisplayName(displayNames); + filter->SetMimeType(mimeTypes); } if (argv.HasProp("fileSizeOver") && !argv.GetProp("fileSizeOver").TypeIs(napi_undefined)) { int64_t fileSizeOver = 0; @@ -110,7 +127,6 @@ static bool GetOptionParam(const NVal &argv, OptionArgs *optionArgs) return false; } } - if (argv.HasProp("recursion")) { tie(succ, optionArgs->recursion) = argv.GetProp("recursion").ToBool(false); if (!succ) { @@ -118,7 +134,6 @@ static bool GetOptionParam(const NVal &argv, OptionArgs *optionArgs) return false; } } - if (argv.HasProp("filter")) { NVal filterProp = argv.GetProp("filter"); if (!filterProp.TypeIs(napi_undefined)) { @@ -178,6 +193,20 @@ static bool FilterDisplayname(const vector &displaynames, const struct d return false; } +static bool FilterMimetype(const vector &mimetypes, const struct dirent &filename) +{ + if (filename.d_type == DT_DIR) { + return true; + } + string fileMimetype = MimeTypeUtil::GetMimeTypeFromExt(ExtractFileExt(filename.d_name)); + for (const auto &mimetypeItem : mimetypes) { + if (mimetypeItem == fileMimetype) { + return true; + } + } + return false; +} + static bool FilterFilesizeOver(const int64_t fFileSizeOver, const struct dirent &filename) { if (fFileSizeOver < 0) { @@ -217,11 +246,15 @@ static bool FilterLastModifyTime(const double lastModifiedAfter, const struct di static bool FilterResult(const struct dirent &filename) { vector fSuffixs = g_optionArgs.filter.GetSuffix(); - if (!FilterSuffix(fSuffixs, filename) && fSuffixs.size() > 0) { + if (!FilterSuffix(fSuffixs, filename) && !fSuffixs.empty()) { return false; } vector fDisplaynames = g_optionArgs.filter.GetDisplayName(); - if (!FilterDisplayname(fDisplaynames, filename) && fDisplaynames.size() > 0) { + if (!FilterDisplayname(fDisplaynames, filename) && !fDisplaynames.empty()) { + return false; + } + vector fMimetype = g_optionArgs.filter.GetMimeType(); + if (!FilterMimetype(fMimetype, filename) && !fMimetype.empty()) { return false; } int64_t fFileSizeOver = g_optionArgs.filter.GetFileSizeOver(); @@ -241,7 +274,6 @@ static int32_t FilterFunc(const struct dirent *filename) if (string_view(filename->d_name) == "." || string_view(filename->d_name) == "..") { return FILTER_DISMATCH; } - if (g_optionArgs.countNum < g_optionArgs.listNum || g_optionArgs.listNum == 0) { if ((filename->d_type == DT_DIR && g_optionArgs.recursion) || FilterResult(*filename)) { return FILTER_MATCH; @@ -261,7 +293,7 @@ static void Deleter(struct NameListArg *arg) static int FilterFileRes(const string &path, vector &dirents) { - unique_ptr pNameList = { new (nothrow) struct NameListArg, Deleter }; + unique_ptr pNameList = {new (nothrow) struct NameListArg, Deleter}; if (!pNameList) { HILOGE("Failed to request heap memory."); return ENOMEM; @@ -280,7 +312,7 @@ static int FilterFileRes(const string &path, vector &dirents) static int RecursiveFunc(const string &path, vector &dirents) { - unique_ptr pNameList = { new (nothrow) struct NameListArg, Deleter }; + unique_ptr pNameList = {new (nothrow) struct NameListArg, Deleter}; if (!pNameList) { HILOGE("Failed to request heap memory."); return ENOMEM; @@ -380,27 +412,47 @@ napi_value ListFile::Async(napi_env env, napi_callback_info info) auto cbExec = [arg, optionArgsTmp]() -> NError { g_optionArgs = optionArgsTmp; int ret = 0; - ret = g_optionArgs.recursion ? RecursiveFunc(g_optionArgs.path, arg->dirents) : - FilterFileRes(g_optionArgs.path, arg->dirents); + ret = g_optionArgs.recursion ? RecursiveFunc(g_optionArgs.path, arg->dirents) + : FilterFileRes(g_optionArgs.path, arg->dirents); g_optionArgs.Clear(); return ret ? NError(ret) : NError(ERRNO_NOERR); }; auto cbCompl = [arg, optionArgsTmp, path = string(path.get())](napi_env env, NError err) -> NVal { if (err) { - return { env, err.GetNapiErr(env) }; + return {env, err.GetNapiErr(env)}; } - return { env, DoListFileVector2NV(env, path, arg->dirents, optionArgsTmp.recursion) }; + return {env, DoListFileVector2NV(env, path, arg->dirents, optionArgsTmp.recursion)}; }; NVal thisVar(env, funcArg.GetThisVar()); - if (funcArg.GetArgc() == NARG_CNT::ONE || (funcArg.GetArgc() == NARG_CNT::TWO && - !NVal(env, funcArg[NARG_POS::SECOND]).TypeIs(napi_function))) { + if (funcArg.GetArgc() == NARG_CNT::ONE || + (funcArg.GetArgc() == NARG_CNT::TWO && !NVal(env, funcArg[NARG_POS::SECOND]).TypeIs(napi_function))) { return NAsyncWorkPromise(env, thisVar).Schedule(LIST_FILE_PRODUCE_NAME, cbExec, cbCompl).val_; } else { NVal cb(env, funcArg[((funcArg.GetArgc() == NARG_CNT::TWO) ? NARG_POS::SECOND : NARG_POS::THIRD)]); return NAsyncWorkCallback(env, thisVar, cb).Schedule(LIST_FILE_PRODUCE_NAME, cbExec, cbCompl).val_; } } +napi_value ListFile::GetMimeType(napi_env env, napi_callback_info info) +{ + NFuncArg funcArg(env, info); + if (!funcArg.InitArgs(NARG_CNT::ONE)) { + HILOGE("Number of arguments unmatched"); + NError(EINVAL).ThrowErr(env); + return nullptr; + } + auto [succGetFileName, fileName, unused] = NVal(env, funcArg[NARG_POS::FIRST]).ToUTF8String(); + std::string fileNameSuffix = fileName.get(); + if (!succGetFileName && fileNameSuffix.empty() ) { + NError(EINVAL).ThrowErr(env); + return nullptr; + } + size_t slashIndex = fileNameSuffix.rfind("."); + if (slashIndex != string::npos) { + fileNameSuffix = fileNameSuffix.substr(slashIndex + 1); + } + return NVal::CreateUTF8String(env, MimeTypeUtil::GetMimeTypeFromExt(fileNameSuffix)).val_; +} } // namespace OHOS::FileManagement::ModuleFileIO \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/listfile.h b/interfaces/kits/js/src/mod_fs/properties/listfile.h index d4dd936a0..65439551c 100755 --- a/interfaces/kits/js/src/mod_fs/properties/listfile.h +++ b/interfaces/kits/js/src/mod_fs/properties/listfile.h @@ -16,8 +16,8 @@ #ifndef INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_LISTFILE_H #define INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_LISTFILE_H -#include "filemgmt_libn.h" #include "file_filter.h" +#include "filemgmt_libn.h" #include @@ -27,6 +27,7 @@ class ListFile { public: static napi_value Sync(napi_env env, napi_callback_info info); static napi_value Async(napi_env env, napi_callback_info info); + static napi_value GetMimeType(napi_env env, napi_callback_info info); }; class ListFileArgs { @@ -35,17 +36,15 @@ public: }; struct NameListArg { - struct dirent** namelist = { nullptr }; + struct dirent **namelist = {nullptr}; int direntNum = 0; }; constexpr int DEFAULT_SIZE = -1; constexpr int DEFAULT_MODIFY_AFTER = -1; struct OptionArgs { - FileFilter filter = FileFilterBuilder() - .SetFileSizeOver(DEFAULT_SIZE) - .SetLastModifiedAfter(DEFAULT_MODIFY_AFTER) - .Build(); + FileFilter filter = + FileFilterBuilder().SetFileSizeOver(DEFAULT_SIZE).SetLastModifiedAfter(DEFAULT_MODIFY_AFTER).Build(); int listNum = 0; int countNum = 0; bool recursion = false; diff --git a/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.cpp b/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.cpp index 48904387c..2bbe45312 100644 --- a/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.cpp @@ -656,6 +656,7 @@ bool PropNExporter::Export() NVal::DeclareNapiFunction("fdopenStreamSync", FdopenStream::Sync), NVal::DeclareNapiFunction("listFile", ListFile::Async), NVal::DeclareNapiFunction("listFileSync", ListFile::Sync), + NVal::DeclareNapiFunction("getMimeType", ListFile::GetMimeType), NVal::DeclareNapiFunction("lseek", Lseek::Sync), NVal::DeclareNapiFunction("moveDir", MoveDir::Async), NVal::DeclareNapiFunction("moveDirSync", MoveDir::Sync), diff --git a/utils/common/include/mimetype.h b/utils/common/include/mimetype.h new file mode 100644 index 000000000..28cb27d10 --- /dev/null +++ b/utils/common/include/mimetype.h @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FILEMGMT_COMMON_MIMETYPE_H +#define FILEMGMT_COMMON_MIMETYPE_H + +#include +#include +#include + +namespace OHOS::FileManagement { +static inline std::unordered_map > mimeTypeMap = { + {"application/epub+zip", {"epub"}}, + {"application/lrc", {"lrc"}}, + {"application/pkix-cert", {"cer"}}, + {"application/rss+xml", {"rss"}}, + {"application/sdp", {"sdp"}}, + {"application/smil+xml", {"smil"}}, + {"application/ttml+xml", {"ttml", "dfxp"}}, + {"application/vnd.ms-pki.stl", {"stl"}}, + {"application/vnd.ms-powerpoint", {"pot", "ppt"}}, + {"application/vnd.ms-wpl", {"wpl"}}, + {"application/vnd.stardivision.writer", {"vor"}}, + {"application/vnd.youtube.yt", {"yt"}}, + {"application/x-font", {"pcf"}}, + {"application/x-mobipocket-ebook", {"prc", "mobi"}}, + {"application/x-pem-file", {"pem"}}, + {"application/x-pkcs12", {"p12", "pfx"}}, + {"application/x-subrip", {"srt"}}, + {"application/x-webarchive", {"webarchive"}}, + {"application/x-webarchive-xml", {"webarchivexml"}}, + {"application/pgp-signature", {"pgp"}}, + {"application/x-x509-ca-cert", {"crt", "der"}}, + {"application/json", {"json"}}, + {"application/javascript", {"js"}}, + {"application/zip", {"zip"}}, + {"application/rar", {"rar"}}, + {"application/pdf", {"pdf"}}, + {"application/msword", {"doc"}}, + {"application/ms-excel", {"xls"}}, + {"application/vnd.openxmlformats-officedocument.wordprocessingml.document", {"docx"}}, + {"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", {"xlsx"}}, + {"application/vnd.openxmlformats-officedocument.presentationml.presentation", {"pptx"}}, + + {"audio/3gpp", {"3ga"}}, + {"audio/ac3", {"ac3", "a52"}}, + {"audio/amr", {"amr"}}, + {"audio/imelody", {"imy"}}, + {"audio/midi", {"rtttl", "xmf", "rtx"}}, + {"audio/mobile-xmf", {"mxmf"}}, + {"audio/mp4", {"m4a", "m4b", "m4p", "f4a", "f4b", "f4p"}}, + {"audio/mpegurl", {"m3u"}}, + {"audio/sp-midil", {"smf"}}, + {"audio/x-matroska", {"mka"}}, + {"audio/x-pn-realaudio", {"ra"}}, + {"audio/x-mpeg", {"mp3"}}, + {"audio/aac", {"aac", "adts", "adt"}}, + {"audio/basic", {"snd"}}, + {"audio/basic", {"flac"}}, + {"audio/mp4", {"mp3", "mp2", "mp1", "mpa", "m4r"}}, + {"audio/wav", {"wav"}}, + {"audio/ogg", {"ogg"}}, + + {"image/gif", {"gif"}}, + {"image/heic", {"heic"}}, + {"image/heic-sequence", {"heics", "heifs"}}, + {"image/bmp", {"bmp", "bm"}}, + {"image/heif", {"heif", "hif"}}, + {"image/avif", {"avif"}}, + {"image/ico", {"cur"}}, + {"image/webp", {"webp"}}, + {"image/x-adobe-dng", {"dng"}}, + {"image/x-fuji-raf", {"raf"}}, + {"image/x-icon", {"icon"}}, + {"image/x-nikon-nrw", {"nrw"}}, + {"image/x-panasonic-rw2", {"rw2"}}, + {"image/x-pentax-pef", {"pef"}}, + {"image/x-samsung-srw", {"srw"}}, + {"image/x-sony-arw", {"arw"}}, + {"image/jpeg", {"jpg", "jpeg", "jpe"}}, + {"image/png", {"png"}}, + {"image/svg+xml", {"svg"}}, + {"image/x-dcraw", {"raw"}}, + + {"video/3gpp2", {"3gpp2", "3gp2", "3g2"}}, + {"video/3gpp", {"3gpp", "3gp"}}, + {"video/avi", {"avi"}}, + {"video/mp4", {"mp4", "f4v", "mp4v", "mpeg4", "mp4"}}, + {"video/mp2t", {"m2ts", "mts"}}, + {"video/mp2ts", {"ts"}}, + {"video/vnd.youtube.yt", {"vt"}}, + {"video/x-webex", {"wrf"}}, + {"video/mpeg", {"mpeg", "mpeg2", "mpv2", "mp2v", "m2v", "m2t", "mpeg1", "mpv1", "mp1v", "m1v", "mpg"}}, + {"video/quicktime", {"mov"}}, + {"video/x-matroska", {"mkv"}}, + {"video/webm", {"webm"}}, + {"video/H264", {"h264"}}, + + {"text/comma-separated-values", {"csv"}}, + {"text/plain", {"diff", "po", "txt"}}, + {"text/rtf", {"rtf"}}, + {"text/text", {"phps", "m3u", "m3u8"}}, + {"text/xml", {"xml"}}, + {"text/x-vcard", {"vcf"}}, + {"text/x-c++hdr", {"hpp", "h++", "hxx", "hh"}}, + {"text/x-c++src", {"cpp", "c++", "cxx", "cc"}}, + {"text/css", {"css"}}, + {"text/html", {"html", "htm", "shtml"}}, + {"text/markdown", {"md", "markdown"}}, + {"text/x-java", {"java"}}, + {"text/x-python", {"py"}} +}; + +class MimeTypeUtil { +public: + MimeTypeUtil() {}; + ~MimeTypeUtil() = default; + + static std::string GetMimeTypeFromExt(const std::string &ext) + { + for (auto &iter : mimeTypeMap) { + auto vec = iter.second; + for (auto &item : vec) { + if (item == ext) { + return iter.first; + } + } + } + return ""; + } + + static std::vector GetExtFromMimeType(const std::string &mimeType) + { + auto it = mimeTypeMap.find(mimeType); + if (it != mimeTypeMap.end()) { + HILOGE("GetExtFromMimeType mimeType: %{public}s", mimeType.c_str()); + return it->second; + } + return {}; + } +}; +} // namespace OHOS::FileManagement +#endif // FILEMGMT_COMMON_MIMETYPE_H \ No newline at end of file -- Gitee From 527ff13749b033571b3cf40eb6079cbec4921aa1 Mon Sep 17 00:00:00 2001 From: yang-jingbo1985 Date: Tue, 5 Dec 2023 20:22:26 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=AE=9E=E7=8E=B0list=20file=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=94=AF=E6=8C=81=20mimetype=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yang-jingbo1985 --- interfaces/kits/js/src/mod_fs/properties/listfile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp index 2656e9701..7a3ef376b 100755 --- a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp @@ -445,7 +445,7 @@ napi_value ListFile::GetMimeType(napi_env env, napi_callback_info info) } auto [succGetFileName, fileName, unused] = NVal(env, funcArg[NARG_POS::FIRST]).ToUTF8String(); std::string fileNameSuffix = fileName.get(); - if (!succGetFileName && fileNameSuffix.empty() ) { + if (!succGetFileName && fileNameSuffix.empty()) { NError(EINVAL).ThrowErr(env); return nullptr; } -- Gitee From cdc72390e2a8e790ef976e707ed210a524b12a3d Mon Sep 17 00:00:00 2001 From: yang-jingbo1985 Date: Thu, 7 Dec 2023 15:26:20 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=AE=9E=E7=8E=B0list=20file=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=94=AF=E6=8C=81=20mimetype=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yang-jingbo1985 --- interfaces/kits/js/src/mod_fs/properties/listfile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp index 7a3ef376b..0cad901ab 100755 --- a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp @@ -196,7 +196,7 @@ static bool FilterDisplayname(const vector &displaynames, const struct d static bool FilterMimetype(const vector &mimetypes, const struct dirent &filename) { if (filename.d_type == DT_DIR) { - return true; + return false; } string fileMimetype = MimeTypeUtil::GetMimeTypeFromExt(ExtractFileExt(filename.d_name)); for (const auto &mimetypeItem : mimetypes) { -- Gitee From b41d386b91de9cf4e17fb2a7a783cba4a150e42f Mon Sep 17 00:00:00 2001 From: yang-jingbo1985 Date: Fri, 8 Dec 2023 10:09:40 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=AE=9E=E7=8E=B0list=20file=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=94=AF=E6=8C=81=20mimetype=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yang-jingbo1985 --- .../kits/js/src/mod_fs/properties/listfile.cpp | 18 ++++++++---------- utils/common/include/mimetype.h | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp index 0cad901ab..582974246 100755 --- a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp @@ -26,7 +26,6 @@ #include "file_utils.h" #include "filemgmt_libhilog.h" - #include "mimetype.h" namespace OHOS::FileManagement::ModuleFileIO { @@ -72,7 +71,7 @@ static bool GetFileFilterParam(const NVal &argv, FileFilter *filter) { bool ret = false; if (argv.HasProp("suffix") && !argv.GetProp("suffix").TypeIs(napi_undefined)) { - vector suffixs; + vector suffixs = {}; if (!GetArray(argv, "suffix", suffixs)) { return false; } @@ -83,14 +82,14 @@ static bool GetFileFilterParam(const NVal &argv, FileFilter *filter) filter->SetSuffix(suffixs); } if (argv.HasProp("displayName") && !argv.GetProp("displayName").TypeIs(napi_undefined)) { - vector displayNames; + vector displayNames = {}; if (!GetArray(argv, "displayName", displayNames)) { return false; } filter->SetDisplayName(displayNames); } if (argv.HasProp("mimeType") && !argv.GetProp("mimeType").TypeIs(napi_undefined)) { - vector mimeTypes; + vector mimeTypes = {}; if (!GetArray(argv, "mimeType", mimeTypes)) { return false; } @@ -410,10 +409,9 @@ napi_value ListFile::Async(napi_env env, napi_callback_info info) return nullptr; } auto cbExec = [arg, optionArgsTmp]() -> NError { - g_optionArgs = optionArgsTmp; - int ret = 0; - ret = g_optionArgs.recursion ? RecursiveFunc(g_optionArgs.path, arg->dirents) - : FilterFileRes(g_optionArgs.path, arg->dirents); + g_optionArgs = optionArgsTmp; + auto ret = g_optionArgs.recursion ? RecursiveFunc(g_optionArgs.path, arg->dirents) + : FilterFileRes(g_optionArgs.path, arg->dirents); g_optionArgs.Clear(); return ret ? NError(ret) : NError(ERRNO_NOERR); }; @@ -445,8 +443,8 @@ napi_value ListFile::GetMimeType(napi_env env, napi_callback_info info) } auto [succGetFileName, fileName, unused] = NVal(env, funcArg[NARG_POS::FIRST]).ToUTF8String(); std::string fileNameSuffix = fileName.get(); - if (!succGetFileName && fileNameSuffix.empty()) { - NError(EINVAL).ThrowErr(env); + if (!succGetFileName || fileNameSuffix.empty()) { + NError(E_PARAMS).ThrowErr(env); return nullptr; } size_t slashIndex = fileNameSuffix.rfind("."); diff --git a/utils/common/include/mimetype.h b/utils/common/include/mimetype.h index 28cb27d10..7ff3c2b37 100644 --- a/utils/common/include/mimetype.h +++ b/utils/common/include/mimetype.h @@ -145,7 +145,7 @@ public: { auto it = mimeTypeMap.find(mimeType); if (it != mimeTypeMap.end()) { - HILOGE("GetExtFromMimeType mimeType: %{public}s", mimeType.c_str()); + HILOGI("GetExtFromMimeType mimeType: %{public}s", mimeType.c_str()); return it->second; } return {}; -- Gitee