GNU/Linux >> Znalost Linux >  >> Linux

Proč mi wget'ing image dává soubor, ne obrázek?

Proč wget vybrat toto jméno?

Bohužel wget nebude dělat žádné předpoklady o tom, co chcete stáhnout, pokud mu to neřeknete. Nezáleží na tom, zda je váš soubor obrázkem, dokumentem, zazipovaným souborem atd.

Soubor se uloží bez ohledu na to, čím URL končí – tedy cokoli od posledního lomítka až po konec adresy URL. Ve vašem případě je to .gif?id=2 . Část za skutečnou příponou souboru (.gif ) je obsažen v adrese URL, ale je to parametr dotazu HTTP. Pro wget , však určí výstupní název souboru.

Jak mohu nastavit jiný název souboru?

Pokud chcete zadat výstupní název souboru pro wget , přidejte -O (velké O) možnost:

wget example.com/something.gif?id=2 -O 2.gif

Toto přepíše výchozí chování a nastaví název souboru na 2.gif . Všimněte si, že -o (malá písmena) volba určuje výstupní název souboru pro všechny zprávy protokolu wget by se jinak mohl vytisknout do shellu.

Nakonec je tu --content-disposition možnost, která může výsledkem je nastavení správného názvu souboru. Ale to zcela závisí na tom, zda server, který stahujete, posílá správné informace v záhlaví:

Tato možnost je užitečná pro některé programy CGI pro stahování souborů, které používají hlavičky Content-Disposition k popisu názvu stahovaného souboru.

Tato možnost je v současné době stále označena jako experimentální, a proto není ve výchozím nastavení povolena.

Důrazně vám doporučuji, abyste si přečetli manuálovou stránku nástrojů, které používáte, abyste pochopili jejich chování. Stačí zadat man wget a přečtěte si jej, zejména možnosti, které poskytuje.

Ještě k tomu, co napsal @Indrek v komentáři k vaší otázce:Předpokládám, že tam máte překlep a nemyslíte tím stahování souboru GIF do souboru s názvem .png — pouhá změna přípony nebude automaticky z něj udělat PNG. GIF a PNG používají různá kódování a pro převod mezi těmito formáty budete muset použít jakýkoli nástroj pro převod obrázků. Tento převod však bude bezztrátový, takže není na škodu stáhnout soubory ve „nesprávném“ formátu a převést je později.


Existuje možnost příkazového řádku --content-disposition což – pokud web poskytuje správné záhlaví – by mělo způsobit uložení souboru se správným názvem.

Můj debian squeeze box říká, že volba je "experimentální", ačkoli...


Je to jednoduše proto, že se podívejte na cestu, ta končí na ?id=2, proto se uloží takto, můžete soubor přesunout nebo použít parametr -O k definování názvu souboru.


Linux
  1. Proč `md5sum` nedává stejný hash jako internet?

  2. Proč následující způsob nezmění velikost základního souboru?

  3. Proč překladový soubor Bash neobsahuje všechny chybové texty?

  1. Linux – Proč Setuid nefunguje?

  2. Jak si vyžádám soubor, ale neuložím jej pomocí Wget?

  3. Proč mapování MAP_GROWSDOWN neroste?

  1. Soubor metadat neodpovídá kontrolnímu součtu – chyba YUM!

  2. Proč 'dd' nefunguje pro vytvoření bootovatelného USB?

  3. Proč dd z /dev/random dává různé velikosti souborů?