Intereting Posts
Облицовочная ошибка "Неустранимая ошибка: исключить исключение" Google_Auth_Exception "с сообщением« Недопустимый код »в C: \ xampp" как использовать почтовый ящик php CodeIgniter "sess_time_to_update" и Indy Cookies Создание «значков» для моего сайта, лучший способ хранить пользовательские значки? Использование PHP Преобразование PHP-класса в модуль apache отношения многие-ко-многим в доктрине jsTree асинхронный поиск – триггер загружает новые узлы Symfony 2 | Исключение формы при изменении объекта с файлом (картиной) CodeIgniter 404 Страница не найдена, но почему? XML / PHP: содержимое не допускается в прологе Чтение очень больших файлов в PHP Загрузить файл из android в базу данных mysql с помощью Base64? Как я могу запустить PHP-скрипт в определенном интервале (например, один раз в день)? Как получить окончательный, перенаправленный, канонический URL-адрес веб-сайта с использованием PHP? php – перенаправление запросов ajax

Как и где сохранять загруженные файлы с помощью ng-потока?

Прежде всего, я использую ng-flow (расширение загрузки файла html5 на основе angular.js)

Мои файлы загружаются, я регистрирую событие в консоли. Но я не понимаю, где и как их спасти.

Вот мой html-код, вызывается загрузка.

<div flow-init flow-files-submitted="$flow.upload()"> <div class="drop" flow-drop ng-class="dropClass"> <span class="btn btn-default" flow-btn>Upload File</span> <span class="btn btn-default" flow-btn flow-directory ng-show="$flow.supportDirectory">Upload Folder</span> <b>OR</b> Drag And Drop your file here </div> 

Вот моя конфигурация

 app.config(['flowFactoryProvider', function (flowFactoryProvider) { flowFactoryProvider.defaults = { target: 'upload.php', permanentErrors: [404, 500, 501], maxChunkRetries: 1, chunkRetryInterval: 5000, simultaneousUploads: 4, singleFile: true }; flowFactoryProvider.on('catchAll', function (event) { console.log('catchAll', arguments); }); // Can be used with different implementations of Flow.js // flowFactoryProvider.factory = fustyFlowFactory; }]); 

upload.php , а $_GET заполнен данными,

 <script>alert('alert' + array(8) { ["flowChunkNumber"]=> string(1) "1" ["flowChunkSize"]=> string(7) "1048576" ["flowCurrentChunkSize"]=> string(6) "807855" ["flowTotalSize"]=> string(6) "807855" ["flowIdentifier"]=> string(11) "807855-3png" ["flowFilename"]=> string(5) "3.png" ["flowRelativePath"]=> string(5) "3.png" ["flowTotalChunks"]=> string(1) "1" } )</script> 

но когда я здесь, что мне нужно сделать, чтобы сохранить мои файлы?

Я попытался сделать move_uploaded_file() на flowFilename и flowRelativePath но ничего не flowRelativePath .

Я новичок в js.

Спасибо.

Посмотрите пример сценария upload.php:

https://github.com/flowjs/flow.js/blob/master/samples/Backend%20on%20PHP.md

 // init the destination file (format <filename.ext>.part<#chunk> // the file is stored in a temporary directory $temp_dir = 'temp/'.$_POST['flowIdentifier']; $dest_file = $temp_dir.'/'.$_POST['flowFilename'].'.part'.$_POST['flowChunkNumber']; 

После того, как вы загрузите свое изображение с помощью flow.js, новый почтовый запрос будет отправлен на ваш сервер. Вам необходимо обработать этот запрос POST и впоследствии обработать файл.

Если вы используете Java + Spring MVC, это будет выглядеть

 @RequestMapping(value = "/upload", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public void handleFileUpload(@RequestParam("file") MultipartFile file) { log.debug("REST request to handleFileUpload"); try { BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File(path + file.getName()))); stream.write(file.getBytes()); stream.close(); log.debug("You successfully uploaded " + file.getName() + "!"); } catch (IOException e) { e.printStackTrace(); } } 

Я просто потратил полдня на работу с ng-flow и захотел опубликовать решение для PHP. Он не использует преимущества функции chunking и resume, мне просто нужно что-то, что будет загружаться без обновления страницы.

Во-первых, flow-init = "{target: '/ upload', testChunks: false} Пример

 <div flow-init="{target: '/upload', testChunks:false}" flow-files-submitted="$flow.upload()" flow-file-success="$file.msg = $message"> <input type="file" flow-btn /> <span flow-btn>Upload File</span> </div> 

Во-вторых,

Он должен теперь POST запросить «/ upload» ….. в этом запросе существует массив $ _FILES.

одна строка кода сохранила файл для меня:

 $result=move_uploaded_file($_FILES['file']['tmp_name'],'yourfilename'); 

Если вы хотите контролировать это через ваш угловой контроллер, вы можете установить такие значения:

  $scope.uploader={}; $scope.upload = function (id) { $scope.uploader.flow.opts.testChunks=false; $scope.uploader.flow.opts.target='/upload; $scope.uploader.flow.upload(); } 

и в вашем html добавьте:

 <div flow-init flow-name="uploader.flow"> <button flow-btn>Add files</button> <div> 

Дон

Создайте папку с именем uploads, где вы переместили временные файлы сюда, затем добавьте код в php-скрипт.

 $uploads_dir = 'uploads'; $target_file = $uploads_dir .'/'. basename($_FILES['file']['name']); move_uploaded_file($_FILES['file']['tmp_name'],$target_file);