文件分片上传 python

服务端功能

上传分片保存

@app.route('/upload_filesliceprocess', methods=['POST'])
def upload_filesliceprocess():
    file = request.files['file']
    name_index = request.form['name_index']
    complete = request.form['complete']
    process = request.form['process']
    clienthash = request.form['clienthash']

    source_name = request.form['filename']
    filename = ''.join(source_name.split('.')[0:-1])
    file_path = fr'{SLICE_DATA}/{filename}'
    p_file_path = pd.Path(file_path)
    if not pd.Path.exists(p_file_path):
        os.makedirs(p_file_path)
    fileindex=fr'{file_path}/{name_index}'
    filename=fr'{file_path}/{name_index}'
    if(os.path.exists(fileindex)==False):
       
        file.save(filename)
    import utils
    
    hashserver=utils.calculate_md5(filename)
    if(clienthash==hashserver):
        return 'ok'
    else:
       return 'error'

    print(f'process:{round(float(process)*100, 2)}%')

合并分片功能

@app.route('/merge_file', methods=['POST'])
def merge_file():
    print('-------------------------------')
     
    filename = request.form['filename']
    print(filename)
    #splitfile=os.path.splitext(filename)
   
    #filename=splitfile[0]
   
    #ext=splitfile[1]
    filename, ext = os.path.splitext(filename)
    ext=ext.replace('.','')
    
    file_path= fr'{SLICE_DATA}/{filename}'
    combination_fun(file_path,filename,ext)
    return 'ok'

合并文件函数

def combination_fun(folder_path, source_name,ext):

    com_path = pd.Path(COMBINATION_DATA)
    if not pd.Path.exists(com_path):
        os.makedirs(com_path)

    ready_folder = os.listdir(folder_path)
    ready_sort_folder = sorted(ready_folder, key=lambda x: int(x.split('_')[-1]))
    with open(f'{COMBINATION_DATA}/{source_name}.{ext}', 'wb') as write_f:
        for item in ready_sort_folder:
            slice_item = os.path.join(folder_path, item)
            print(slice_item)
            with open(slice_item, "rb") as read_f:
                content = read_f.read()
                write_f.write(content)
    #删除缓存文件
    for item in ready_sort_folder:
            slice_item = os.path.join(folder_path, item)
            os.remove(slice_item)

前端

引用库   jquery Md5

 
   

上传简单界面

  
   
        
  


       上传进度:0
           
  

上传脚本

你可能感兴趣的:(python,前端,开发语言)