80 lines
1.6 KiB
Plaintext
80 lines
1.6 KiB
Plaintext
note
|
|
description: "API to manage files."
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
CMS_FILE_UPLOADER_API
|
|
|
|
inherit
|
|
CMS_MODULE_API
|
|
|
|
REFACTORING_HELPER
|
|
|
|
create
|
|
make
|
|
|
|
feature -- Access
|
|
|
|
uploads_directory_name: STRING = "uploaded_files"
|
|
|
|
uploads_location: PATH
|
|
do
|
|
Result := cms_api.files_location.extended (uploads_directory_name)
|
|
end
|
|
|
|
file_link (f: CMS_FILE): CMS_LOCAL_LINK
|
|
local
|
|
s: STRING
|
|
do
|
|
s := "files"
|
|
across
|
|
f.location.components as ic
|
|
loop
|
|
s.append_character ('/')
|
|
s.append (percent_encoded (ic.item.name))
|
|
end
|
|
create Result.make (f.filename, s)
|
|
end
|
|
|
|
feature -- Factory
|
|
|
|
new_file (p: PATH): CMS_FILE
|
|
do
|
|
create Result.make (p, cms_api)
|
|
end
|
|
|
|
new_uploads_file (p: PATH): CMS_FILE
|
|
-- New uploaded path from `p' related to `uploads_location'.
|
|
do
|
|
create Result.make ((create {PATH}.make_from_string (uploads_directory_name)).extended_path (p), cms_api)
|
|
end
|
|
|
|
feature -- Storage
|
|
|
|
save_uploaded_file (f: CMS_UPLOADED_FILE)
|
|
local
|
|
p: PATH
|
|
ut: FILE_UTILITIES
|
|
stored: BOOLEAN
|
|
do
|
|
reset_error
|
|
p := f.location
|
|
if p.is_absolute then
|
|
else
|
|
p := uploads_location.extended_path (p)
|
|
end
|
|
if ut.file_path_exists (p) then
|
|
-- FIXME: find an alternative name for it, by appending "-" + i.out , with i: INTEGER;
|
|
error_handler.add_custom_error (-1, "uploaded file storage failed", "A file with same name already exists!")
|
|
else
|
|
-- move file to path
|
|
stored := f.move_to (p)
|
|
if not stored then
|
|
error_handler.add_custom_error (-1, "uploaded file storage failed", "Issue occurred when saving uploaded file!")
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|