Files
ROC/modules/file_upload/cms_file_uploader_api.e
2016-01-20 14:13:09 +01:00

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