@ -82,36 +82,45 @@ func handleImport(app *App, u *User, w http.ResponseWriter, r *http.Request) err
filesSubmitted := len ( files )
filesSubmitted := len ( files )
var filesImported int
var filesImported int
for _ , formFile := range files {
for _ , formFile := range files {
file , err := formFile . Open ( )
fname := ""
if err != nil {
ok := func ( ) bool {
fileErrs = append ( fileErrs , fmt . Errorf ( "failed to open form file: %s" , formFile . Filename ) )
file , err := formFile . Open ( )
log . Error ( "import textfile: open from form: %v" , err )
if err != nil {
continue
fileErrs = append ( fileErrs , fmt . Errorf ( "failed to open form file: %s" , formFile . Filename ) )
}
log . Error ( "import textfile: open from form: %v" , err )
defer file . Close ( )
return false
}
tempFile , err := ioutil . TempFile ( "" , "post-upload-*.txt" )
defer file . Close ( )
if err != nil {
fileErrs = append ( fileErrs , fmt . Errorf ( "failed to create temporary file for: %s" , formFile . Filename ) )
tempFile , err := ioutil . TempFile ( "" , "post-upload-*.txt" )
log . Error ( "import textfile: create temp file: %v" , err )
if err != nil {
continue
fileErrs = append ( fileErrs , fmt . Errorf ( "failed to create temporary file for: %s" , formFile . Filename ) )
}
log . Error ( "import textfile: create temp file: %v" , err )
defer tempFile . Close ( )
return false
}
_ , err = io . Copy ( tempFile , file )
defer tempFile . Close ( )
if err != nil {
fileErrs = append ( fileErrs , fmt . Errorf ( "failed to copy file into temporary location: %s" , formFile . Filename ) )
_ , err = io . Copy ( tempFile , file )
log . Error ( "import textfile: copy to temp: %v" , err )
if err != nil {
fileErrs = append ( fileErrs , fmt . Errorf ( "failed to copy file into temporary location: %s" , formFile . Filename ) )
log . Error ( "import textfile: copy to temp: %v" , err )
return false
}
info , err := tempFile . Stat ( )
if err != nil {
fileErrs = append ( fileErrs , fmt . Errorf ( "failed to get file info of: %s" , formFile . Filename ) )
log . Error ( "import textfile: stat temp file: %v" , err )
return false
}
fname = info . Name ( )
return true
} ( )
if ! ok {
continue
continue
}
}
info , err := tempFile . Stat ( )
post , err := wfimport . FromFile ( filepath . Join ( os . TempDir ( ) , fname ) )
if err != nil {
fileErrs = append ( fileErrs , fmt . Errorf ( "failed to get file info of: %s" , formFile . Filename ) )
log . Error ( "import textfile: stat temp file: %v" , err )
continue
}
post , err := wfimport . FromFile ( filepath . Join ( os . TempDir ( ) , info . Name ( ) ) )
if err == wfimport . ErrEmptyFile {
if err == wfimport . ErrEmptyFile {
// not a real error so don't log
// not a real error so don't log
_ = addSessionFlash ( app , w , r , fmt . Sprintf ( "%s was empty, import skipped" , formFile . Filename ) , nil )
_ = addSessionFlash ( app , w , r , fmt . Sprintf ( "%s was empty, import skipped" , formFile . Filename ) , nil )