Skip to content

Commit c2e1dc4

Browse files
authored
Fix the file upload multiple times of Pipelines (#3568)
1 parent 1c5e127 commit c2e1dc4

File tree

2 files changed

+44
-12
lines changed

2 files changed

+44
-12
lines changed

pipelines/ui/webapp_question_answering.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,20 @@ def on_change_text():
5252
st.session_state.raw_json = None
5353

5454

55+
def upload():
56+
data_files = st.session_state.upload_files['files']
57+
for data_file in data_files:
58+
# Upload file
59+
if data_file and data_file.name not in st.session_state.upload_files[
60+
'uploaded_files']:
61+
raw_json = upload_doc(data_file)
62+
st.session_state.upload_files['uploaded_files'].append(
63+
data_file.name)
64+
# Save the uploaded files
65+
st.session_state.upload_files['uploaded_files'] = list(
66+
set(st.session_state.upload_files['uploaded_files']))
67+
68+
5569
def main():
5670

5771
st.set_page_config(
@@ -65,6 +79,7 @@ def main():
6579
set_state_if_absent("results", None)
6680
set_state_if_absent("raw_json", None)
6781
set_state_if_absent("random_question_requested", False)
82+
set_state_if_absent("upload_files", {'uploaded_files': [], 'files': []})
6883

6984
# Small callback to reset the interface in case the text of the question changes
7085
def reset_results(*args):
@@ -107,12 +122,14 @@ def reset_results(*args):
107122
if not DISABLE_FILE_UPLOAD:
108123
st.sidebar.write("## 文件上传:")
109124
data_files = st.sidebar.file_uploader(
110-
"", type=["pdf", "txt", "docx", "png"], accept_multiple_files=True)
111-
for data_file in data_files:
112-
# Upload file
113-
if data_file:
114-
raw_json = upload_doc(data_file)
115-
st.sidebar.write(str(data_file.name) + "    ✅ ")
125+
"",
126+
type=["pdf", "txt", "docx", "png"],
127+
help="选择多个文件",
128+
accept_multiple_files=True)
129+
st.session_state.upload_files['files'] = data_files
130+
st.sidebar.button("文件上传", on_click=upload)
131+
for data_file in st.session_state.upload_files['uploaded_files']:
132+
st.sidebar.write(str(data_file) + "    ✅ ")
116133
hs_version = ""
117134
try:
118135
hs_version = f" <small>(v{pipelines_version()})</small>"

pipelines/ui/webapp_semantic_search.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,20 @@ def on_change_text():
5555
st.session_state.raw_json = None
5656

5757

58+
def upload():
59+
data_files = st.session_state.upload_files['files']
60+
for data_file in data_files:
61+
# Upload file
62+
if data_file and data_file.name not in st.session_state.upload_files[
63+
'uploaded_files']:
64+
raw_json = upload_doc(data_file)
65+
st.session_state.upload_files['uploaded_files'].append(
66+
data_file.name)
67+
# Save the uploaded files
68+
st.session_state.upload_files['uploaded_files'] = list(
69+
set(st.session_state.upload_files['uploaded_files']))
70+
71+
5872
def main():
5973

6074
st.set_page_config(
@@ -67,6 +81,7 @@ def main():
6781
set_state_if_absent("results", None)
6882
set_state_if_absent("raw_json", None)
6983
set_state_if_absent("random_question_requested", False)
84+
set_state_if_absent("upload_files", {'uploaded_files': [], 'files': []})
7085

7186
# Small callback to reset the interface in case the text of the question changes
7287
def reset_results(*args):
@@ -100,13 +115,13 @@ def reset_results(*args):
100115
data_files = st.sidebar.file_uploader(
101116
"",
102117
type=["pdf", "txt", "docx", "png"],
103-
help="文件上传",
118+
help="选择多个文件",
104119
accept_multiple_files=True)
105-
for data_file in data_files:
106-
# Upload file
107-
if data_file:
108-
raw_json = upload_doc(data_file)
109-
st.sidebar.write(str(data_file.name) + " &nbsp;&nbsp; ✅ ")
120+
st.session_state.upload_files['files'] = data_files
121+
st.sidebar.button("文件上传", on_click=upload)
122+
for data_file in st.session_state.upload_files['uploaded_files']:
123+
st.sidebar.write(str(data_file) + " &nbsp;&nbsp; ✅ ")
124+
110125
hs_version = ""
111126
try:
112127
hs_version = f" <small>(v{pipelines_version()})</small>"

0 commit comments

Comments
 (0)