まず、 ng-flow (angular.jsフレームワークのhtml5ファイルアップロード拡張子)を使用します
ファイルがアップロードされ、コンソールにイベントを記録します。しかし、どこにどのように保存するのかわかりません。
これが私の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>
_
しかし、私がここにいるとき、ファイルを保存するために何をしなければなりませんか?
flowFilename
とflowRelativePath
でmove_uploaded_file()
を実行しようとしましたが、何も追加されません。
私は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リクエストがサーバーに送信されます。この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用にこれに対するソリューションを投稿したいと思いました。チャンク化と再開の機能を利用していません。ページを更新せずにアップロードできるものが必要でした。
まず、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配列が存在するはずです。
1行のコードでファイルが保存されました。
$result=move_uploaded_file($_FILES['file']['tmp_name'],'yourfilename');
angularコントローラーを介してこれを制御しようとしている場合は、次のように値を設定できます。
$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>
ドン
ploadsというフォルダーを作成します。これは、一時ファイルをここに移動してから、phpスクリプトにコードを追加することを意味します。
$uploads_dir = 'uploads';
$target_file = $uploads_dir .'/'. basename($_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'],$target_file);