fix: create parent dirs for downloads with subdirectory paths
Some archive.org file names include directory prefixes (e.g. "ZERO-G - Deepest India/vocal.iso"). MkdirAll only created the output root, not intermediate directories. Added filepath.Dir(MkdirAll) in both downloadFile (CLI) and handleAPIDownload (web).
This commit is contained in:
@@ -330,6 +330,8 @@ func cmdDownload(args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func downloadFile(job downloadJob) (int64, error) {
|
func downloadFile(job downloadJob) (int64, error) {
|
||||||
|
os.MkdirAll(filepath.Dir(job.OutPath), 0755)
|
||||||
|
|
||||||
// Check if file already exists and has the expected size
|
// Check if file already exists and has the expected size
|
||||||
if fi, err := os.Stat(job.OutPath); err == nil {
|
if fi, err := os.Stat(job.OutPath); err == nil {
|
||||||
if job.Size > 0 && fi.Size() == job.Size {
|
if job.Size > 0 && fi.Size() == job.Size {
|
||||||
|
|||||||
@@ -189,6 +189,8 @@ func handleAPIDownload(w http.ResponseWriter, r *http.Request) {
|
|||||||
jobIDs = append(jobIDs, jobID)
|
jobIDs = append(jobIDs, jobID)
|
||||||
|
|
||||||
go func(j downloadJob, s *downloadState) {
|
go func(j downloadJob, s *downloadState) {
|
||||||
|
os.MkdirAll(filepath.Dir(j.OutPath), 0755)
|
||||||
|
|
||||||
client := &http.Client{Timeout: 0}
|
client := &http.Client{Timeout: 0}
|
||||||
req, _ := http.NewRequest("GET", j.URL, nil)
|
req, _ := http.NewRequest("GET", j.URL, nil)
|
||||||
req.Header.Set("User-Agent", userAgent)
|
req.Header.Set("User-Agent", userAgent)
|
||||||
|
|||||||
Reference in New Issue
Block a user