Merge remote-tracking branch 'origin/master'
# Conflicts: # safeshare/safeshare-frontend/src/pages/shareFile.js
This commit is contained in:
commit
9bdbea2ba5
|
@ -22,25 +22,10 @@ function ShareFile() {
|
|||
const [ttl, setTtl] = useState('');
|
||||
const [shareableLink, setShareableLink] = useState('');
|
||||
const [notification, setNotification] = useState('');
|
||||
let subtitle;
|
||||
const [modalIsOpen, setIsOpen] = React.useState(false);
|
||||
|
||||
function openModal() {
|
||||
setIsOpen(true);
|
||||
}
|
||||
|
||||
function afterOpenModal() {
|
||||
// references are now sync'd and can be accessed.
|
||||
subtitle.style.color = '#f00';
|
||||
}
|
||||
|
||||
function closeModal() {
|
||||
setIsOpen(false);
|
||||
}
|
||||
const [errorMessage, setErrorMessage] = useState('');
|
||||
|
||||
const handleFileUpload = (file) => {
|
||||
setFile(file);
|
||||
//setPasscode('1234');
|
||||
console.log(file);
|
||||
if (file) {
|
||||
const formData = new FormData();
|
||||
|
@ -139,7 +124,7 @@ function ShareFile() {
|
|||
<label className="block text-sm font-medium text-gray-700">
|
||||
Download Here:
|
||||
</label>
|
||||
<a href={shareableLink} className="px-6 py-3 text-blue-100 no-underline bg-blue-500 rounded hover:bg-blue-600 hover:underline hover:text-blue-200">Download file</a>
|
||||
<a href={shareableLink} className="text-lg font-bold text-blue-600">{shareableLink}</a>
|
||||
</div>
|
||||
)}
|
||||
{notification && (
|
||||
|
|
|
@ -1,17 +1,29 @@
|
|||
import requests
|
||||
import io
|
||||
import os
|
||||
import concurrent.futures
|
||||
import random
|
||||
import string
|
||||
|
||||
# Endpoint
|
||||
endpoint_url = "http://127.0.0.1:8000/api/files/"
|
||||
|
||||
# Number of files to send
|
||||
num_files = 5
|
||||
num_files = 10
|
||||
num_threads = 5 # Change the number of threads as needed
|
||||
|
||||
# Create and send files
|
||||
for i in range(num_files):
|
||||
# Generate sample file
|
||||
file_content = io.BytesIO(b'This is a sample file content.')
|
||||
# Function to generate random file content
|
||||
def generate_random_content():
|
||||
content_length = random.randint(1024, 20480) # Random content size between 1KB and 20KB
|
||||
return ''.join(random.choices(string.ascii_letters + string.digits, k=content_length))
|
||||
|
||||
# Function to send files in a thread and return the key
|
||||
def send_files_thread(thread_id):
|
||||
keys = []
|
||||
for i in range(num_files):
|
||||
# Generate random file content
|
||||
content = generate_random_content()
|
||||
file_content = io.BytesIO(content.encode())
|
||||
|
||||
# Define the files dictionary for the POST request
|
||||
files = {'file': ('file{}.txt'.format(i), file_content)}
|
||||
|
@ -24,9 +36,46 @@ for i in range(num_files):
|
|||
|
||||
# Check if the request was successful
|
||||
if response.status_code == 201:
|
||||
print(f"File {i} uploaded successfully.")
|
||||
items = response.json()
|
||||
for item in items:
|
||||
key = item.get('key')
|
||||
if key:
|
||||
keys.append(key)
|
||||
print(f"Thread {thread_id}: File {i} uploaded successfully with key {key}.")
|
||||
else:
|
||||
print(f"File {i} upload failed with status code {response.status_code}.")
|
||||
print(f"Thread {thread_id}: File {i} uploaded, but key not found in the response.")
|
||||
else:
|
||||
print(f"Thread {thread_id}: File {i} upload failed with status code {response.status_code}.")
|
||||
|
||||
# Close the file content
|
||||
file_content.close()
|
||||
|
||||
return keys
|
||||
|
||||
# Function to receive files in a thread using the provided key
|
||||
def receive_files_thread(thread_id, file_key):
|
||||
# Make the GET request to retrieve the file using the provided key
|
||||
response = requests.get(endpoint_url + file_key)
|
||||
|
||||
# Check if the request was successful
|
||||
if response.status_code == 200:
|
||||
# Save or process the received file content here
|
||||
print(f"Thread {thread_id}: File with key {file_key} received successfully.")
|
||||
else:
|
||||
print(f"Thread {thread_id}: File with key {file_key} retrieval failed with status code {response.status_code}.")
|
||||
|
||||
# Create and send/receive files using multiple threads
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor:
|
||||
# Start multiple threads for sending files
|
||||
send_futures = [executor.submit(send_files_thread, thread_id) for thread_id in range(num_threads)]
|
||||
|
||||
# Retrieve the keys from the responses
|
||||
keys = []
|
||||
for future in concurrent.futures.as_completed(send_futures):
|
||||
keys.extend(future.result())
|
||||
|
||||
# Start multiple threads for receiving files using the obtained keys
|
||||
receive_futures = [executor.submit(receive_files_thread, thread_id, file_key) for thread_id, file_key in enumerate(keys)]
|
||||
|
||||
# Wait for all receive threads to complete
|
||||
concurrent.futures.wait(receive_futures)
|
||||
|
|
Loading…
Reference in New Issue