10

まず、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>

しかし、私がここにいるとき、ファイルを保存するために何をしなければなりませんか?

私はやろうとしましmove_uploaded_file()たが、何も追加しませんでした。flowFilenameflowRelativePath

私はjsが初めてです。

ありがとうございました。

4

4 に答える 4

4

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'];
于 2014-07-03T08:15:25.827 に答える
2

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();
    }
}
于 2015-05-23T09:35:52.513 に答える
0

私は 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>

2番、

「/upload」へのリクエストを POST する必要があります。そのリクエストには $_FILES 配列が存在します。

1 行のコードでファイルが保存されました。

$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>

ドン

于 2015-12-11T15:29:00.247 に答える
0

uploadsという名前のフォルダーを作成するということは、ここに一時ファイルを移動したことを意味し、php スクリプトにコードを追加します。

$uploads_dir = 'uploads';
$target_file = $uploads_dir .'/'. basename($_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'],$target_file);
于 2016-06-15T01:24:33.003 に答える