привет
У меня есть ссылка для временной загрузки файла.
Пожалуйста, заполните небольшой набор образцов.
Спасибо,





Решение 1
Имейте в виду, что количество файлов, которые вы можете иметь, ограничено. Несмотря на то, что в папке TEMP есть сборщик мусора, вы не сможете полагаться на него из-за жизненного цикла приложения. Поэтому вам лучше создать оболочку IDisposable, которая удалит файл, когда вы закончите с ним. См. Решение здесь: http://stackoverflow.com/questions/400140/how-do-i-automatically-delete-tempfiles-in-c[^]
с использованием System; с использованием System.IO; запечатанный класс TempFile: IDisposable {строковый путь; общедоступный TempFile (): это (System.IO.Path.GetTempFileName ()) {} общедоступный TempFile (строковый путь) {если (string.IsNullOrEmpty (путь)) выбросить новое исключение ArgumentNullException ("путь"); this.path = путь; } общедоступная строка Path {get {if (path == null) throw new ObjectDisposedException (GetType (). Name); Обратный путь; }} ~ TempFile () {Dispose (false); } public void Dispose () {Dispose (true); } private void Dispose (логическое удаление) {if (удаление) {GC.SuppressFinalize (это); } if (путь! = null) {попробуйте {File.Delete (путь); } catch {}//лучший путь = null; }}} статический класс Program {static void Main () {string path; используя (var tmp = new TempFile ()) {path = tmp.Path; Console.WriteLine (File.Exists (путь)); } Console.WriteLine (File.Exists (путь)); }}
И здесь у вас есть примеры выполнения конкретной загрузки: http://www.csharp-examples.net/download-files/[^]. На самом деле это довольно просто.
Загрузка ссылка разная для каждого покупателя.
1) создать таблицу, которая сопоставляет случайную часть URL-адреса с фактическим содержимым
2) подумайте о виртуальном пути и используйте маршрутизацию для перехвата таких запросов
3) в каждом случае, когда вы хотите поделиться, дайте такой контент, создайте длинную случайную строку, которая будет частью виртуального пути, и сохраните ее в приведенной выше таблице
4) при обработке этой ссылки вы просто берете случайную строку, разрешаете сопоставление из таблицы и обслуживаете контент
Если вы используете MVC, а не веб-формы, это даже проще.
Если вам просто нужен управляемый ОС временный файл на стороне сервера, используйте этот: Path.GetTempFileName () [^ ].
Имейте в виду, что количество файлов, которые вы можете иметь, ограничено. Несмотря на то, что в папке TEMP есть сборщик мусора, вы не сможете полагаться на него из-за жизненного цикла приложения. Поэтому вам лучше создать оболочку IDisposable, которая удалит файл, когда вы закончите с ним. См. Решение здесь: http://stackoverflow.com/questions/400140/how-do-i-automatically-delete-tempfiles-in-c[^]
с использованием System; с использованием System.IO; запечатанный класс TempFile: IDisposable {строковый путь; общедоступный TempFile (): это (System.IO.Path.GetTempFileName ()) {} общедоступный TempFile (строковый путь) {если (string.IsNullOrEmpty (путь)) выбросить новое исключение ArgumentNullException ("путь"); this.path = путь; } общедоступная строка Path {get {if (path == null) throw new ObjectDisposedException (GetType (). Name); Обратный путь; }} ~ TempFile () {Dispose (false); } public void Dispose () {Dispose (true); } private void Dispose (логическое удаление) {if (удаление) {GC.SuppressFinalize (это); } if (путь! = null) {попробуйте {File.Delete (путь); } catch {}//лучший путь = null; }}} статический класс Program {static void Main () {string path; используя (var tmp = new TempFile ()) {path = tmp.Path; Console.WriteLine (File.Exists (путь)); } Console.WriteLine (File.Exists (путь)); }}
И здесь у вас есть примеры выполнения конкретной загрузки: http://www.csharp-examples.net/download-files/[^]. На самом деле это довольно просто.
Как сгенерировать URL-адрес загрузки временного файла для локального хранилища laravel? [closed]
Из официальной документации Laravel:
Для файлов, хранящихся с использованием драйвера s3 или rackspace, вы можете создать временный URL-адрес для данного файла с помощью метода externalUrl.
Есть ли способ иметь временный URL-адрес загрузки для файлов вместо использования s3/etc и для только локальное хранилище . Я использую библиотеку https://github.com/spatie/laravel-medialibrary для разработки.
общедоступная функция downloadFileAction () {if (isset ($ _REQUEST ['имя_файла'])) {$ pathFile = STORAGE_PATH. '/'. $ _ REQUEST ['имя_файла']; заголовок ('Content-Description: File Transfer'); header ('Content-Disposition: attachment; filename = "'. $ _ REQUEST ['имя_файла']. '"'); заголовок ('Content-Type: application/octet-stream'); header ('Content-Transfer-Encoding: двоичный'); заголовок ('Content-Length:'. Размер файла ($ pathFile)); заголовок ('Cache-Control: must-revalidate, post-check = 0, pre-check = 0'); header ('Pragma: public'); header ('Expires: 0'); readfile ($ pathFile);}} общедоступная функция uploadFile (массив $ file) {$ storagePath = STORAGE_PATH; @mkdir ($ storagePath, 0777, true); $ fullPath = $ storagePath. uniqid (time ()). $ file ['name']; $ fileTemp = $ file ['tmp_name']; move_uploaded_file ($ fileTemp, $ fullPath); return $ fullPath;}
В вашем контроллере вы можете взять файл с таким: $ _FILES