66 @date:2024/8/8 17:49
77 @desc:
88"""
9- import base64
9+
10+ import ast
1011import io
1112import json
1213import mimetypes
@@ -195,31 +196,23 @@ def execute(self, tool_lib_id, input_field_list, **kwargs) -> NodeResult:
195196 else :
196197 all_params = init_params_default_value | params
197198 if self .node .properties .get ('kind' ) == 'data-source' :
198- download_file_list = []
199- download_list = function_executor .exec_code (
200- tool_lib .code ,
201- {** all_params , ** self .workflow_params .get ('data_source' )},
202- function_name = 'get_down_file_list'
203- )
204- for item in download_list :
205- result = function_executor .exec_code (
206- tool_lib .code ,
207- {** all_params , ** self .workflow_params .get ('data_source' ),
208- 'download_item' : item },
209- function_name = 'download'
210- )
211- file_bytes = result .get ('file_bytes' , [])
212- chunks = []
213- for chunk in file_bytes :
214- chunks .append (base64 .b64decode (chunk ))
215- file = bytes_to_uploaded_file (b'' .join (chunks ), result .get ('name' ))
216- file_url = self .upload_knowledge_file (file )
217- download_file_list .append ({'file_id' : file_url .split ('/' )[- 1 ], 'name' : result .get ('name' )})
218- all_params = {
219- ** all_params , ** self .workflow_params .get ('data_source' ),
220- 'download_file_list' : download_file_list
221- }
222- result = download_file_list
199+ exist = function_executor .exist_function (tool_lib .code , 'get_download_file_list' )
200+ if exist :
201+ download_file_list = []
202+ download_list = function_executor .exec_code (tool_lib .code ,
203+ {** all_params , ** self .workflow_params .get ('data_source' )},
204+ function_name = 'get_download_file_list' )
205+ for item in download_list :
206+ result = function_executor .exec_code (tool_lib .code ,
207+ {** all_params , ** self .workflow_params .get ('data_source' ),
208+ 'download_item' : item },
209+ function_name = 'download' )
210+ file = bytes_to_uploaded_file (ast .literal_eval (result .get ('file_bytes' )), result .get ('name' ))
211+ file_url = self .upload_knowledge_file (file )
212+ download_file_list .append ({'file_id' : file_url , 'name' : result .get ('name' )})
213+ result = download_file_list
214+ else :
215+ result = function_executor .exec_code (tool_lib .code , all_params )
223216 else :
224217 result = function_executor .exec_code (tool_lib .code , all_params )
225218 return NodeResult ({'result' : result },
@@ -237,7 +230,7 @@ def upload_knowledge_file(self, file):
237230 'meta' : meta ,
238231 'source_id' : knowledge_id ,
239232 'source_type' : FileSourceType .KNOWLEDGE .value
240- }).upload ()
233+ }).upload (). replace ( "./oss/file/" , '' )
241234 file .close ()
242235 return file_url
243236
0 commit comments