Merge pull request #538 from kvtorp/master

Added workaround to loading zero-length files
This commit is contained in:
Lars Hvam 2017-01-16 13:14:47 +01:00 committed by GitHub
commit d0d24f3f48

View File

@ -27,12 +27,12 @@ CLASS lcl_zip DEFINITION FINAL.
PRIVATE SECTION. PRIVATE SECTION.
CLASS-METHODS file_upload CLASS-METHODS file_upload
RETURNING value(rv_xstr) TYPE xstring RETURNING VALUE(rv_xstr) TYPE xstring
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS unzip_file CLASS-METHODS unzip_file
IMPORTING iv_xstr TYPE xstring IMPORTING iv_xstr TYPE xstring
RETURNING value(rt_files) TYPE ty_files_tt RETURNING VALUE(rt_files) TYPE ty_files_tt
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS normalize_path CLASS-METHODS normalize_path
@ -52,11 +52,11 @@ CLASS lcl_zip DEFINITION FINAL.
CLASS-METHODS encode_files CLASS-METHODS encode_files
IMPORTING it_files TYPE ty_files_item_tt IMPORTING it_files TYPE ty_files_item_tt
RETURNING value(rv_xstr) TYPE xstring RETURNING VALUE(rv_xstr) TYPE xstring
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS get_message CLASS-METHODS get_message
RETURNING value(rv_message) TYPE string RETURNING VALUE(rv_message) TYPE string
RAISING lcx_exception. RAISING lcx_exception.
ENDCLASS. "lcl_zip DEFINITION ENDCLASS. "lcl_zip DEFINITION
@ -342,10 +342,9 @@ CLASS lcl_zip IMPLEMENTATION.
METHOD unzip_file. METHOD unzip_file.
DATA: lo_zip TYPE REF TO cl_abap_zip, DATA: lo_zip TYPE REF TO cl_abap_zip,
lv_xstr TYPE xstring, lv_data TYPE xstring.
lt_splice TYPE cl_abap_zip=>t_splice_entries.
FIELD-SYMBOLS: <ls_splice> LIKE LINE OF lt_splice, FIELD-SYMBOLS: <ls_zipfile> TYPE cl_abap_zip=>t_file,
<ls_file> LIKE LINE OF rt_files. <ls_file> LIKE LINE OF rt_files.
@ -359,14 +358,13 @@ CLASS lcl_zip IMPLEMENTATION.
lcx_exception=>raise( 'error from zip' ). lcx_exception=>raise( 'error from zip' ).
ENDIF. ENDIF.
lt_splice = cl_abap_zip=>splice( iv_xstr ). LOOP AT lo_zip->files ASSIGNING <ls_zipfile>.
LOOP AT lt_splice ASSIGNING <ls_splice>.
lo_zip->get( lo_zip->get(
EXPORTING EXPORTING
name = <ls_splice>-name name = <ls_zipfile>-name
IMPORTING IMPORTING
content = lv_xstr content = lv_data
EXCEPTIONS EXCEPTIONS
zip_index_error = 1 zip_index_error = 1
zip_decompression_error = 2 zip_decompression_error = 2
@ -379,12 +377,12 @@ CLASS lcl_zip IMPLEMENTATION.
filename( filename(
EXPORTING EXPORTING
iv_str = <ls_splice>-name iv_str = <ls_zipfile>-name
IMPORTING IMPORTING
ev_path = <ls_file>-path ev_path = <ls_file>-path
ev_filename = <ls_file>-filename ). ev_filename = <ls_file>-filename ).
<ls_file>-data = lv_xstr. <ls_file>-data = lv_data.
<ls_file>-sha1 = lcl_hash=>sha1( iv_type = gc_type-blob <ls_file>-sha1 = lcl_hash=>sha1( iv_type = gc_type-blob
iv_data = <ls_file>-data ). iv_data = <ls_file>-data ).