def upload(cookie, source_path, path, upload_mode): '''上传一个文件. 这个是使用的网页中的上传接口. upload_mode - const.UploadMode, 如果文件已在服务器上存在: * overwrite, 直接将其重写. * newcopy, 保留原先的文件, 并在新上传的文件名尾部加上当前时间戳. ''' ondup = const.UPLOAD_ONDUP[upload_mode] dir_name, file_name = os.path.split(path) url = ''.join([ const.PCS_URL_C, 'file?method=upload&app_id=250528', '&ondup=', ondup, '&dir=', encoder.encode_uri_component(dir_name), '&filename=', encoder.encode_uri_component(file_name), '&', cookie.sub_output('BDUSS'), ]) with open(source_path, 'rb') as fh: data = fh.read() fields = [] files = [('file', file_name, data)] headers = {'Accept': const.ACCEPT_HTML, 'Origin': const.PAN_URL} req = net.post_multipart(url, headers, fields, files) if req: return json.loads(req.data.decode()) else: return None
def upload(cookie, source_path, path, upload_mode): '''上传一个文件. 这个是使用的网页中的上传接口. upload_mode - 只能是1或者2. ondup - 如果文件已在服务器上存在, 该如何操作. 有两个选项: overwrite, 直接将其重写. newcopy, 保留原先的文件, 并在新上传的文件名尾部加上当前时间戳. ''' ondup = const.UPLOAD_ONDUP[upload_mode] if not ondup: ondup = 'newcopy' dir_name, file_name = os.path.split(path) url = ''.join([ const.PCS_URL_C, 'file?method=upload&app_id=250528', '&ondup=', ondup, '&dir=', encoder.encode_uri_component(dir_name), '&filename=', encoder.encode_uri_component(file_name), '&', cookie.sub_output('BDUSS'), ]) with open(source_path, 'rb') as fh: data = fh.read() fields = [] files = [('file', file_name, data)] headers = {'Accept': const.ACCEPT_HTML, 'Origin': const.PAN_URL} req = net.post_multipart(url, headers, fields, files) if req: return json.loads(req.data.decode()) else: return None
def slice_upload(cookie, data): print( '/usr/local/lib/python3.4/dist-packages/bcloud/pcs.py:slice_upload 810' ) '''分片上传一个大文件 分片上传完成后, 会返回这个分片的MD5, 用于最终的文件合并. 如果上传失败, 需要重新上传. 不需要指定上传路径, 上传后的数据会被存储在服务器的临时目录里. data - 这个文件分片的数据. ''' url = ''.join([ const.PCS_URL_C, 'file?method=upload&type=tmpfile&app_id=250528', '&', cookie.sub_output('BDUSS'), ]) fields = [] files = [('file', ' ', data)] headers = {'Accept': const.ACCEPT_HTML, 'Origin': const.PAN_URL} req = net.post_multipart(url, headers, fields, files) if req: return json.loads(req.data.decode()) else: return None
def slice_upload(cookie, data): '''分片上传一个大文件 分片上传完成后, 会返回这个分片的MD5, 用于最终的文件合并. 如果上传失败, 需要重新上传. 不需要指定上传路径, 上传后的数据会被存储在服务器的临时目录里. data - 这个文件分片的数据. ''' url = ''.join([ const.PCS_URL_C, 'file?method=upload&type=tmpfile&app_id=250528', '&', cookie.sub_output('BDUSS'), ]) fields = [] files = [('file', ' ', data)] headers = {'Accept': const.ACCEPT_HTML,'Origin': const.PAN_URL} req = net.post_multipart(url, headers, fields, files) if req: return json.loads(req.data.decode()) else: return None