Golang io.Copy()不会复制CentOS中的文件

时间:2015-09-22 21:04:17

标签: linux file go io server

我是Go的新手。 以下代码在Windows中完美运行,但在CentOS上运行不正常。 我从客户端收到一个multipart文件。该文件的大小正确,读取时没有错误。

我需要为上传用户创建特定目录并将文件保存在那里。 目录创建得很好,但文件没有写入。 整个代码在任何阶段都没有错误运行。 我正在使用Go v1.5.1和BeeGo框架。

以下是代码:

    file , header , err := this.GetFile( "logo" );

    defer func(){
        err := file.Close()
        if err != nil {
            fmt.Println( err.Error() )
        }
    }()


    size , seekErr := file.Seek( 0 , 2 )
    maxSize , _ := beego.AppConfig.Int64( "MaxSize" )

    if err != nil {

        response.Data = err.Error()
        response.Success = false

    } else if seekErr != nil {

        response.Data = seekErr.Error()
        response.Success = false

    } else if size > maxSize {

        response.Data = "File too large: " + string(size)
        response.Success = false

    } else {

        if _ , errDE := os.Stat( "static/media/business" ) ; os.IsNotExist( errDE ){
            os.Mkdir( "static/media/business" , os.ModeDir )
            os.Chmod( "static/media/business" , 0755 )
        }

        offset , err := file.Seek( 0 , 0 )

        if err != nil {
            fmt.Println( "Error seeking: " + err.Error() )
        }

        path := "static/media/business/" + u.( models.User ).Business.BusinessPage

        if _ , errDE := os.Stat( path ) ; os.IsNotExist( errDE ){
            os.Mkdir( path , os.ModeDir )
            os.Chmod( path , 0755 )
        }

        name := files.GenerateFileName( header.Filename , 24 )

        out , err := os.Create( path + "/" + name )

        if err != nil {

            response.Data = err.Error()
            response.Success = false

        } else {

            defer func(){
                err := out.Close()
                if err != nil {
                    fmt.Println( err.Error() )
                }
            }()

            _ , err = io.Copy( out , file )
            os.Chmod( path + "/" + name , 0755 )
            ...

我有什么遗失的吗?

更新

看来我可以io.Copy到上述路径中的任何* .txt文件,但不能到图像文件。这是一个线索吗?

0 个答案:

没有答案