0

私は単純なフォームを持っています:

<input type="hidden" name="MAX_FILE_SIZE" value="2097152" id="MAX_FILE_SIZE">
<input type="file" name="file_upload" id="file_upload" class="picture_main">
<input type="submit" name="upload_picture" id="upload_picture" value="Submit">

私はajaxアップロードをしようとしています:

submit.on("click", function(){
        var file = $('#file_upload').val();
        uploadImageAjax(file);
        return false;
});

var uploadmageAjax = function(file)
{
    $.ajax({
        type: "POST",
        url: "/test/index/imageupload",
        data: {
            'file': file
        },
        dataType: "json",
        success: function (data) {
            console.log(data);
        }
    });
}

私が返すものは、例えば、 file: "C:\fakepath\weirdan003-10.jpeg"

しかし、それが何であるかわかりませんfakepath!?

私がphpだけでそれを行うとしたら、次のような画像が得られます:

if (isset($_POST['upload_picture']) ) {
            $data = $formImageUpload->getValues();
            $pictureName = $data['picture'];
....

そしてそれをアップロードします。

だから私が理解したいのは、ajaxがそのアクションにPOSTを呼び出して正しいファイルを呼び出して、それをディスクにアップロードできるかどうかです。

$('#file_upload').val();$_FILEを保持しますか??

何か案は?

ありがとう

4

3 に答える 3

3
var file = $('#file_upload').val();

これは、クライアント マシン上のファイルへのパスのみを返します。セキュリティ上の理由から、c:\fakepath\file_name.ext のように返されます。私の記憶が正しければ、一部の古いブラウザでは実際のパスを取得できました。それでも、サーバー上のファイルを取得するのには役立ちません。

ajax スタイルのアップロードでは、推奨されたプラグインのいくつかを使用できます。または、jQuery Formsプラグインを使用してください。と非常によく似た動作をし$.ajaxます。

これで、ファイルが正しくアップロードされると、ファイルに関するすべての必要な情報が$_FILES

あなたの場合$_FILES['file_upload']、「file_upload」がファイル入力の名前であるようなものになります。

これで、 move_uploaded_fileを使用して一時ストレージから移動できます。そして、そのファイルで好きなことをしてください

編集: Zend を使用していることがわかります。サーバー側で FileUpload 要素を操作する方法については、こちらをご覧ください。Zend では、move_uploaded_file の代わりに FileUpload メソッドを使用できます。

于 2012-08-23T18:30:34.553 に答える
0

For client side, I suggest you to use a plugin.

For server side, you will need to handle it to read from the stream. I think there is a full example (client and server side) on valums git.

于 2012-08-23T18:18:50.240 に答える
0

jQuery ajax は、非同期ファイル アップロードをサポートしていません。jQuery の ajax メソッドを使用した jQuery アップロード ファイル (プラグインなし) を参照してください。

ajax ファイルのアップロードを使用する場合は、プラグインを実装することをお勧めします。

于 2012-08-23T18:09:36.930 に答える