#1489 bugfix补丁分支合入develop

Merged
lewis merged 5 commits from bugfix into develop 2 years ago
  1. +3
    -0
      models/repo.go
  2. +2
    -2
      modules/storage/obs.go
  3. +4
    -0
      modules/structs/repo.go
  4. +3
    -0
      modules/validation/binding.go
  5. +1
    -0
      routers/api/v1/repo/repo.go
  6. +1
    -1
      routers/repo/attachment.go
  7. +11
    -1
      web_src/js/components/ObsUploader.vue

+ 3
- 0
models/repo.go View File

@@ -1133,6 +1133,9 @@ func IsUsableRepoAlias(name string) error {


// CreateRepository creates a repository for the user/organization. // CreateRepository creates a repository for the user/organization.
func CreateRepository(ctx DBContext, doer, u *User, repo *Repository, opts ...CreateRepoOptions) (err error) { func CreateRepository(ctx DBContext, doer, u *User, repo *Repository, opts ...CreateRepoOptions) (err error) {
if repo.Alias == "" {
repo.Alias = repo.Name
}
repo.LowerAlias = strings.ToLower(repo.Alias) repo.LowerAlias = strings.ToLower(repo.Alias)
if err = IsUsableRepoName(repo.Name); err != nil { if err = IsUsableRepoName(repo.Name); err != nil {
return err return err


+ 2
- 2
modules/storage/obs.go View File

@@ -57,8 +57,8 @@ func ObsHasObject(path string) (bool, error) {
return hasObject, nil return hasObject, nil
} }


func GetObsPartInfos(uuid string, uploadID string) (string, error) {
key := strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/")
func GetObsPartInfos(uuid, uploadID, fileName string) (string, error) {
key := strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/")


output, err := ObsCli.ListParts(&obs.ListPartsInput{ output, err := ObsCli.ListParts(&obs.ListPartsInput{
Bucket: setting.Bucket, Bucket: setting.Bucket,


+ 4
- 0
modules/structs/repo.go View File

@@ -100,6 +100,10 @@ type CreateRepoOption struct {
// required: true // required: true
// unique: true // unique: true
Name string `json:"name" binding:"Required;AlphaDashDot;MaxSize(100)"` Name string `json:"name" binding:"Required;AlphaDashDot;MaxSize(100)"`
// Alias of the repository to create
// required: false
// unique: true
Alias string `json:"alias" binding:"AlphaDashDotChinese;MaxSize(100)"`
// Description of the repository to create // Description of the repository to create
Description string `json:"description" binding:"MaxSize(255)"` Description string `json:"description" binding:"MaxSize(255)"`
// Whether the repository is private // Whether the repository is private


+ 3
- 0
modules/validation/binding.go View File

@@ -128,6 +128,9 @@ func addAlphaDashDotChineseRule() {
return strings.HasPrefix(rule, "AlphaDashDotChinese") return strings.HasPrefix(rule, "AlphaDashDotChinese")
}, },
IsValid: func(errs binding.Errors, name string, val interface{}) (bool, binding.Errors) { IsValid: func(errs binding.Errors, name string, val interface{}) (bool, binding.Errors) {
if val == "" {
return true, errs
}
if !ValidAlphaDashDotChinese(fmt.Sprintf("%v", val)) { if !ValidAlphaDashDotChinese(fmt.Sprintf("%v", val)) {
errs.Add([]string{name}, ErrAlphaDashDotChinese, "ErrAlphaDashDotChinese") errs.Add([]string{name}, ErrAlphaDashDotChinese, "ErrAlphaDashDotChinese")
return false, errs return false, errs


+ 1
- 0
routers/api/v1/repo/repo.go View File

@@ -232,6 +232,7 @@ func CreateUserRepo(ctx *context.APIContext, owner *models.User, opt api.CreateR
} }
repo, err := repo_service.CreateRepository(ctx.User, owner, models.CreateRepoOptions{ repo, err := repo_service.CreateRepository(ctx.User, owner, models.CreateRepoOptions{
Name: opt.Name, Name: opt.Name,
Alias: opt.Alias,
Description: opt.Description, Description: opt.Description,
IssueLabels: opt.IssueLabels, IssueLabels: opt.IssueLabels,
Gitignores: opt.Gitignores, Gitignores: opt.Gitignores,


+ 1
- 1
routers/repo/attachment.go View File

@@ -542,7 +542,7 @@ func GetSuccessChunks(ctx *context.Context) {
log.Error("GetPartInfos failed:%v", err.Error()) log.Error("GetPartInfos failed:%v", err.Error())
} }
} else { } else {
chunks, err = storage.GetObsPartInfos(fileChunk.UUID, fileChunk.UploadID)
chunks, err = storage.GetObsPartInfos(fileChunk.UUID, fileChunk.UploadID, fileName)
if err != nil { if err != nil {
log.Error("GetObsPartInfos failed:%v", err.Error()) log.Error("GetObsPartInfos failed:%v", err.Error())
} }


+ 11
- 1
web_src/js/components/ObsUploader.vue View File

@@ -350,6 +350,16 @@ export default {
etags[currentChunk] = res.headers.etag; etags[currentChunk] = res.headers.etag;
} }


async function uploadMinioNewMethod(url,e){
var xhr = new XMLHttpRequest();
xhr.open('PUT', url, false);
xhr.setRequestHeader('Content-Type', '')
xhr.send(e.target.result);
var etagValue = xhr.getResponseHeader('ETag');
//console.log(etagValue);
etags[currentChunk] = etagValue;
}

async function updateChunk(currentChunk) { async function updateChunk(currentChunk) {
await axios.post( await axios.post(
'/attachments/update_chunk', '/attachments/update_chunk',
@@ -372,7 +382,7 @@ export default {
await getUploadChunkUrl(currentChunk, partSize); await getUploadChunkUrl(currentChunk, partSize);
if (urls[currentChunk] != '') { if (urls[currentChunk] != '') {
// 上传到minio // 上传到minio
await uploadMinio(urls[currentChunk], e);
await uploadMinioNewMethod(urls[currentChunk], e);
if (etags[currentChunk] != '') { if (etags[currentChunk] != '') {
// 更新数据库:分片上传结果 // 更新数据库:分片上传结果
//await updateChunk(currentChunk); //await updateChunk(currentChunk);


Loading…
Cancel
Save