@@ -1097,7 +1097,12 @@ bool S3fsCurl::UploadMultipartPostCallback(S3fsCurl* s3fscurl)
10971097 string header_str (s3fscurl->headdata ->str (), s3fscurl->headdata ->size ());
10981098 int pos = header_str.find (" ETag: \" " );
10991099 if (pos != std::string::npos) {
1100- s3fscurl->partdata .etag = header_str.substr (pos + 7 , 32 ); // 获取32位的MD5 ETag值
1100+ if (header_str.at (pos+39 ) != ' "' ) {
1101+ // sha1
1102+ s3fscurl->partdata .etag = header_str.substr (pos + 7 , 40 );
1103+ } else {
1104+ s3fscurl->partdata .etag = header_str.substr (pos + 7 , 32 ); // ETag get md5 value
1105+ }
11011106 S3FS_PRN_ERR (" partdata.etag : %s" , s3fscurl->partdata .etag .c_str ());
11021107 }
11031108 s3fscurl->partdata .etaglist ->at (s3fscurl->partdata .etagpos ).assign (s3fscurl->partdata .etag );
@@ -2964,7 +2969,12 @@ int S3fsCurl::UploadMultipartPostRequest(const char* tpath, int part_num, string
29642969 string header_str (headdata->str (), headdata->size ());
29652970 int pos = header_str.find (" ETag: \" " );
29662971 if (pos != std::string::npos) {
2967- partdata.etag = header_str.substr (pos + 7 , 40 );
2972+ if (header_str.at (pos+39 ) != ' "' ) {
2973+ // sha1
2974+ partdata.etag = header_str.substr (pos + 7 , 40 );
2975+ } else {
2976+ partdata.etag = header_str.substr (pos + 7 , 32 ); // ETag get md5 value
2977+ }
29682978 S3FS_PRN_ERR (" partdata.etag : %s" , partdata.etag .c_str ());
29692979 }
29702980 partdata.uploaded = true ;
0 commit comments