3 votos

Subir una imagen a un sitio web sin descargarla

Windows tiene una función en la que cuando pegamos un enlace de imagen directa ( xxx.com/xxx.jpg ) en el campo de entrada "nombre de archivo" del explorador de archivos de carga (la pequeña ventana que aparece cuando hacemos clic en "Elegir archivo"/"Cargar" en cualquier sitio web) la imagen se descarga automáticamente (como un archivo temporal) y se carga.

No tienes que guardar la imagen y luego subirla a algún sitio...

¿Hay alguna forma de conseguir lo mismo en MacOS?

Esta pregunta ya se ha formulado anteriormente:

Cargar el archivo a través de la URL

Carga de archivos directamente desde una URL en el diálogo de carga (Archivo/Abrir)

Sin embargo, las respuestas son bastante antiguas. ¿Quizás esta función se haya implementado ahora?

3voto

aaplmath Puntos 599

Desafortunadamente, creo que la respuesta corta a tu pregunta es no, esto todavía no es posible (razonablemente) en MacOS. El enfoque más sencillo parece ser descargar la imagen, subirla y luego borrarla. Este es probablemente el enfoque que yo tomaría personalmente. Sin embargo,

Si estás realmente desesperado por encontrar una manera de descargar un archivo temporal desde el diálogo de archivos, hay técnicamente una manera de hacerlo, aunque no creo que haya ningún caso de uso práctico para este enfoque. Pero, si no es más que una prueba de concepto, esto es lo que he reunido.

La premisa básica del enfoque es utilizar un nombre de archivo como entrada de la URL. Es decir, introduces la URL que quieres como el nombre de un archivo (que, afortunadamente, puede ser bastante largo en APFS) en una ubicación especial en el disco, y un script descargará temporalmente el recurso correcto de la web en el mismo directorio para que lo insertes. (Tenga en cuenta una advertencia importante: la URL no debe contener dos puntos ya que MacOS no puede manejar esos nombres de archivo. Esto significa que tendrá que omitir el https:// de las URLs al escribirlas/pegarlas).

A continuación te explicamos cómo ponerlo en práctica:

  1. Abra las Preferencias del Sistema y vaya a Seguridad y Privacidad > Privacidad > Acceso total al disco. Haz clic en el candado de la parte inferior izquierda para desbloquear el panel. A continuación, en el Finder, ve a /usr/bin/ y arrastra el python3 en la lista de Preferencias del Sistema. Asegúrese de que la casilla junto a python3 se comprueba.

  2. Guarde lo siguiente como com.badidea.url-file-watcher.plist en ~/Library/LaunchAgents . Sustituir [PATH TO PYTHON SCRIPT] con el absoluto la ruta de acceso al script de Python que crearás más adelante (yo puse el mío en /Users/[myusername]/Documents/fetchurl.py ). Sustituya también [PATH TO WATCHED FOLDER] con una ruta relativa o absoluta a la carpeta donde pondrás el "archivo mágico" (yo elegí ~/Desktop/filefromurl/ ):

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>url-file-watcher</string> <key>ProgramArguments</key> <array> <string>/usr/bin/python3</string> <string>[PATH TO PYTHON SCRIPT]</string> </array> <key>WatchPaths</key> <array> <string>[PATH TO WATCHED FOLDER]</string> </array> </dict> </plist>

  3. Cree el archivo Python en la ruta que seleccionó en el paso 2 (de nuevo, en mi ejemplo, sería en ~/Documents/fetchurl.py ), y pegue el siguiente código:

    import os import time from urllib.parse import urlparse, unquote from urllib.request import urlretrieve from pathlib import Path

    def main(): dir_path = os.path.expanduser('~/Desktop/filefromurl') files = os.listdir(dir_path) if '.DS_Store' in files: files.remove('.DS_Store')

    url_from_file = files[0].replace(':', '/')

    if url_from_file == 'url': return

    file_name = unquote(os.path.basename(urlparse(url_from_file).path)) filename.replace(':', '') file_name.replace('/', ':') try: urlretrieve('https://' + url_from_file, os.path.join(dir_path, file_name)) except: try: urlretrieve('http://' + url_from_file, os.path.join(dir_path, file_name)) except: return os.remove(os.path.join(dir_path, files[0]))

    time.sleep(10) # customize as desired -- # of seconds to wait before deleting temp file (can't use again until it's deleted) for file in os.listdir(dir_path): os.remove(os.path.join(dir_path, file)) Path(os.path.join(dir_path, 'url')).touch()

    main()

  4. Cree la "carpeta vigilada" que introdujo en el paso 2. (En mi ejemplo, es ~/Desktop/filefromurl .) A continuación, abra el Terminal y escriba touch [PATH TO WATCHED FOLDER]/url , sustituyendo a [PATH TO WATCHED FOLDER] con la ruta relativa o absoluta a su "carpeta vigilada" que ha creado. (Así que para mí, esto sería touch ~/Desktop/filefromurl/url .)

  5. En el Terminal, ejecute launchctl load ~/LaunchAgents/com.badidea.url-file-watcher.plist .

  6. Ahora, cuando quiera cargar un archivo en su navegador, simplemente navegue a su "carpeta vigilada" (yo la pondría en su barra lateral del Finder para mayor comodidad) y luego cambie el nombre del url a la URL que desea descargar. Después de un momento, verás que el archivo descargado aparece en el explorador de archivos, y tendrás diez segundos (el retraso se puede personalizar en la línea 30 del Python script) para seleccionar y cargar el archivo, después de lo cual el archivo temporal se eliminará automáticamente y se sustituirá por el marcador de posición url archivo para la próxima vez.

Y para demostrar que todo funciona (técnicamente), he aquí una breve demostración:

Demo GIF

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X