フォームを一切使用せずに、<input type="file">
からjQueryを使用してPOSTメソッドを使用して 'upload.php'にファイル/ファイルを送信することはできますか?入力タグがフォームタグ内にありません。それは個別に立つ。ですから、私は 'ajaxForm'や 'ajaxSubmit'のようなjQueryプラグインを使いたくありません。フォームなしでファイルをアップロード
答えて
このpuglin simpleUpload、不要フォーム
Htmlの試してみてください。それを行うことは非常に基本的な方法
$('#simpleUpload').simpleUpload({
url: 'upload.php',
trigger: '#enviar',
success: function(data){
alert('Envio com sucesso');
}
});
残念ながら、それは動作しません – alerya
ベイシング上this tutorial、ここに:
<input type="file" name="arquivo" id="simpleUpload" multiple >
<button type="button" id="enviar">Enviar</button>
Javascriptを
$('your_trigger_element_selector').on('click', function(){
var data = new FormData();
data.append('input_file_name', $('your_file_input_selector').prop('files')[0]);
// append other variables to data if you want: data.append('field_name_x', field_value_x);
$.ajax({
type: 'POST',
processData: false, // important
contentType: false, // important
data: data,
url: your_ajax_path,
dataType : 'json',
// in PHP you can call and process file in the same way as if it was submitted from a form:
// $_FILES['input_file_name']
success: function(jsonData){
...
}
...
});
});
適切なエラー処理を追加することを忘れないでください。
FormDataを使用すると、POSTリクエストでデータを送信できます。あなたは(URL、メソッドおよびパラメータデータのように)あなたの要求の設定を知っている限り、AJAXリクエストを作るために、フォームを使用する必要はありません
var myFormData = new FormData();
myFormData.append('pictureFile', pictureInput.files[0]);
$.ajax({
url: 'upload.php',
type: 'POST',
processData: false, // important
contentType: false, // important
dataType : 'json',
data: myFormData
});
:ここでは簡単な例です。
これは最高の解決策ですが、もう一つの選択肢は
はい、そうです。古いブラウザではFormDataとajaxをサポートしていないため、ファイルをアップロードすることはできません。 –
'processData:false'と' contentType:false'を設定オブジェクトに追加することを忘れないでください。そうしないと、Uncaught TypeErrorが返されます:不正な呼び出し – jsmiff
申し訳ありませんが、その男ですが、AngularJSはシンプルで洗練されたソリューションを提供しています。ファイルはRequest.Filesコレクションと帰国で見つけてアップロード節約
ngApp.controller('ngController', ['$upload',
function($upload) {
$scope.Upload = function($files, index) {
for (var i = 0; i < $files.length; i++) {
var file = $files[i];
$scope.upload = $upload.upload({
file: file,
url: '/File/Upload',
data: {
id: 1 //some data you want to send along with the file,
name: 'ABC' //some data you want to send along with the file,
},
}).progress(function(evt) {
}).success(function(data, status, headers, config) {
alert('Upload done');
}
})
.error(function(message) {
alert('Upload failed');
});
}
};
}]);
.Hidden {
display: none
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div data-ng-controller="ngController">
<input type="button" value="Browse" onclick="$(this).next().click();" />
<input type="file" ng-file-select="Upload($files, 1)" class="Hidden" />
</div>
サーバー側では、私はアクションでMVCコントローラを持っています。ここでは
は、私が使用するコードですJsonResultあなたはAngularJSを使用している場合は、申し訳ありません...ここにすべての答えはまだFormData APIを使用している
このスニペットには多くのエラーがあります。 –
$ uploadディレクティブでは動作しないため、下に表示されます – NicoJuicy
:-)交尾していない場合は、これを試してみてください。これは、フォームなしのフォームファイルアップロードのようなものです。また、このようなxmlHttpRequest
を使用してPOST
リクエストのボディ内のコンテンツとして直接ファイルをアップロードすることができます
var xmlHttpRequest = new XMLHttpRequest();
var file = ...file handle...
var fileName = ...file name...
var target = ...target...
var mimeType = ...mime type...
xmlHttpRequest.open('POST', target, true);
xmlHttpRequest.setRequestHeader('Content-Type', mimeType);
xmlHttpRequest.setRequestHeader('Content-Disposition', 'attachment; filename="' + fileName + '"');
xmlHttpRequest.send(file);
Content-Type
とContent-Disposition
ヘッダは、我々は(MIMEタイプおよびファイル名)を送信しているものを説明するために使用されています。
私は同様の回答を投稿しましたhere。
ステップ1:HTMLコードを配置するHTMLページを作成します。
ステップ2:HTMLコードページの下端(フッター)にJavascriptを作成し、スクリプトタグにJquery Codeを挿入します。
手順3:PHPファイルとPHPコードのコピーを過去に作成する。 Jqueryコードの後に$.ajax
コードURLは、あなたのPHPファイル名に適用されます。
JS
//$(document).on("change", "#avatar", function() { // If you want to upload without a submit button
$(document).on("click", "#upload", function() {
var file_data = $("#avatar").prop("files")[0]; // Getting the properties of file from file field
var form_data = new FormData(); // Creating object of FormData class
form_data.append("file", file_data) // Appending parameter named file with properties of file_field to form_data
form_data.append("user_id", 123) // Adding extra parameters to form_data
$.ajax({
url: "/upload_avatar", // Upload Script
dataType: 'script',
cache: false,
contentType: false,
processData: false,
data: form_data, // Setting the data attribute of ajax with file_data
type: 'post',
success: function(data) {
// Do something after Ajax completes
}
});
});
HTML
<input id="avatar" type="file" name="avatar" />
<button id="upload" value="Upload" />
PHPの
print_r($_FILES);
print_r($_POST);
コードにいくつかのコメント/説明を追加してください。 – kvorobiev
'、'の後に 'type: 'post''を入れてください – user3284463
ありがとうございました:) Thanks – shekhardtu
- 1. Django + HTMLフォームでファイルをアップロード
- 2. フォームなしでファイルをアップロードする方法
- 3. IE8用紙をアップロードしてもフォームを保存できない、アップロードしない
- 4. フォームをアップロードして別のサーバーにファイルをアップロードできますか?
- 5. フォームからサーバーにファイルをアップロードする
- 6. Linuxのコマンドラインを使用してフォームをアップロードしてアップロードするファイル
- 7. ASPを使用してフォームを介してファイルをアップロード
- 8. エンティティクラスなしのフォームを使用してファイルをアップロードする方法
- 9. JSONなしでAJAXファイルをアップロード
- 10. ファイルをActiveXクラスなしでアップロードする
- 11. 同じフォームに異なるファイルをアップロードする方法
- 12. jQuery ajaxフォームとZend_Formファイルのアップロード
- 13. PDFファイルをアップロードし、ASP.netでアップロードしたファイルをプレビューするMVC3
- 14. ファイルをアップロードしてカールのあるフォームを送信
- 15. PHP cURL:フォームからリモートAPIにファイルをアップロードしますか?
- 16. PHPはフォームからWebサーバーにファイルをアップロードします。エラーメッセージ
- 17. HTMLフォームを使用したiWork '08(Pages、Numbers、Keynote)ファイルのアップロード
- 18. ajaxフォームを使用したmvc3ファイルのアップロード - Request.Files empty
- 19. javascript xhrファイルjQueryなしでアップロード
- 20. extjs 4.2でのファイルのアップロードform.submit()なし
- 21. オブジェクト編集時に古いファイルを保存し、Djangoフォームに新しいファイルをアップロードしない
- 22. CodeIgniter - フィールドとファイルのアップロードでフォームを確認する
- 23. フォーム提出と一緒にajaxで複数のファイルをアップロード
- 24. web2pyでファイルのアップロードhtmlフォームを維持する
- 25. フォームでDrupal 7にファイルをアップロードするには?
- 26. 多段階フォームの次のステップでファイルの詳細をアップロードしました
- 27. extjs 4を使用してフォームなしでファイルをアップロードすることは可能ですか?
- 28. TransferUtilityでファイルをアップロードできない
- 29. CarrierwaveでHerokuで大きなファイルをアップロード
- 30. フォームとHTMLを使用してサーバーにファイルをアップロードできますか?
このお試しください:http://www.uploadify.com/をが、フラッシュを使用しますバージョン。さあ、あなたの岩を投げなさい。 HTML5バージョンがフォームなしで動作するかどうかはわかりません。おそらく、しかし、私は確信していません。 –
Arrr ....私はHTML5で動くはずだと言いたい。しかし、プラットフォームの互換性が問題になるのは、数年以上前のブラウザだ。フォームを作成する上で害を及ぼしたり、ネットから動的にフォームを生成したりすることは何ですか? – Yitzhak