added: setting a correct mime type for static files - using magic library
added: std::wstring file_mime_type to ItemContent - a mime type for static file added: Header (core/header.h) - there will be header names defined, at the moment only content_type added: FuncionsBase::Finish() - it is called at the end when the winix finishes
This commit is contained in:
@@ -62,6 +62,12 @@ void Upload::Init()
|
||||
}
|
||||
|
||||
|
||||
void Upload::Finish()
|
||||
{
|
||||
CloseMagicLib();
|
||||
}
|
||||
|
||||
|
||||
bool Upload::HasAccess(const Item & item)
|
||||
{
|
||||
// you can use 'upload' only in a directory
|
||||
@@ -229,6 +235,7 @@ void Upload::UploadMulti()
|
||||
cur->request->item.item_content.file_size = i->second.file_size;
|
||||
|
||||
functions->PrepareUrl(cur->request->item);
|
||||
AnalizeFileType(i->second.tmp_filename, cur->request->item.item_content.file_mime_type);
|
||||
UploadFile(cur->request->item, i->second.tmp_filename);
|
||||
i->second.tmp_filename.clear();
|
||||
}
|
||||
@@ -268,6 +275,7 @@ void Upload::UploadSingle()
|
||||
functions->PrepareUrl(cur->request->item);
|
||||
}
|
||||
|
||||
AnalizeFileType(post_file.tmp_filename, cur->request->item.item_content.file_mime_type);
|
||||
UploadFile(cur->request->item, post_file.tmp_filename);
|
||||
post_file.tmp_filename.clear();
|
||||
|
||||
@@ -279,10 +287,89 @@ void Upload::UploadSingle()
|
||||
}
|
||||
|
||||
|
||||
void Upload::InitMagicLibIfNeeded()
|
||||
{
|
||||
if( !magic_cookie )
|
||||
{
|
||||
log << log3 << "Upload: loading magic library" << logend;
|
||||
magic_cookie = magic_open(MAGIC_MIME_TYPE);
|
||||
|
||||
if( magic_cookie )
|
||||
{
|
||||
if( magic_load(magic_cookie, nullptr) < 0 )
|
||||
{
|
||||
log << log1 << "Upload: I cannot load the magic file, magic_load failed";
|
||||
const char * err = magic_error(magic_cookie);
|
||||
|
||||
if( err )
|
||||
{
|
||||
log << ", error: " << err;
|
||||
}
|
||||
|
||||
log << logend;
|
||||
CloseMagicLib();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log1 << "Upload: I cannot initialize magic library, magic_open failed" << logend;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Upload::CloseMagicLib()
|
||||
{
|
||||
if( magic_cookie )
|
||||
{
|
||||
log << log3 << "Upload: closing magic library" << logend;
|
||||
magic_close(magic_cookie);
|
||||
magic_cookie = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Upload::AnalizeFileType(const std::wstring & file_path, std::wstring & file_type)
|
||||
{
|
||||
file_type.clear();
|
||||
|
||||
if( magic_cookie )
|
||||
{
|
||||
std::string file;
|
||||
pt::wide_to_utf8(file_path, file);
|
||||
|
||||
log << log3 << "Upload: analize file: " << file;
|
||||
const char * magic_file_type = magic_file(magic_cookie, file.c_str());
|
||||
|
||||
if( magic_file_type )
|
||||
{
|
||||
log << ", mime type is: " << magic_file_type << logend;
|
||||
pt::utf8_to_wide(magic_file_type, file_type);
|
||||
}
|
||||
else
|
||||
{
|
||||
log << logend << log1 << "Upload: I cannot analize file: " << file << ", magic_file failed";
|
||||
const char * err = magic_error(magic_cookie);
|
||||
|
||||
if( err )
|
||||
{
|
||||
log << ", error: " << err;
|
||||
}
|
||||
|
||||
log << logend;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log1 << "Upload: magic library not initialized" << logend;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Upload::MakePost()
|
||||
{
|
||||
InitMagicLibIfNeeded();
|
||||
cur->request->item_tab.clear();
|
||||
is_jquery_upload = cur->request->IsParam(L"jquery_upload");
|
||||
|
||||
@@ -299,6 +386,7 @@ void Upload::MakePost()
|
||||
UploadMulti();
|
||||
else
|
||||
UploadSingle();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user