Ext Jsを使用してファイルアップロードフィールドを作成する手順
特定の手順に関する限り、ExtJS 3xでサポートされている機能を使用して、このモジュール/プラグインを使用するのが最善です。
http://dev.sencha.com/deploy/dev/examples/form/file-upload.html
コアスクリプトは、メインのHTMLファイル(コアExtスクリプトにリンクしている場所)、他のスクリプトを配置した後のheadセクションに、Ext JSパッケージに付属しています。
<script type="text/javascript" src="nameofyourextfolder/examples/ux/fileuploadfield/FileUploadField.js"></script>
残念ながら、Ext JSのこの要素に関する膨大なドキュメントはありません。ただし、基本的な機能については、以下を使用して非同期アップロードフィールドを持つフォームを作成できます。
myuploadform= new Ext.FormPanel({
fileUpload: true,
width: 500,
autoHeight: true,
bodyStyle: 'padding: 10px 10px 10px 10px;',
labelWidth: 50,
defaults: {
anchor: '95%',
allowBlank: false,
msgTarget: 'side'
},
items:[
{
xtype: 'fileuploadfield',
id: 'filedata',
emptyText: 'Select a document to upload...',
fieldLabel: 'File',
buttonText: 'Browse'
}],
buttons: [{
text: 'Upload',
handler: function(){
if(myuploadform.getForm().isValid()){
form_action=1;
myuploadform.getForm().submit({
url: 'handleupload.php',
waitMsg: 'Uploading file...',
success: function(form,action){
msg('Success', 'Processed file on the server');
}
});
}
}
}]
})
このコードは、アップロードフィールドとアップロードボタンを備えた新しいフォームパネルを作成します。アップロードボタンをクリックすると、選択したファイルがサーバーサイドスクリプトhandleupload.php(または呼び出したもの)に送信されます。次に、このスクリプトを使用して、ファイルをどのように処理するかを処理します。これの例は潜在的にあるかもしれません:
$fileName = $_FILES['filedata']['name'];
$tmpName = $_FILES['filedata']['tmp_name'];
$fileSize = $_FILES['filedata']['size'];
$fileType = $_FILES['filedata']['type'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc()){
$fileName = addslashes($fileName);
}
$query = "INSERT INTO yourdatabasetable (`name`, `size`, `type`, `file`) VALUES ('".$fileName."','".$fileSize."', '".$fileType."', '".$content."')";
mysql_query($query);
ファイルをSQL DBに挿入します。覚えておくべきことは、サーバー側のファイルが通常のHTMLフォームと同じようにアップロードを処理することです...
お役に立てれば!
iDのみを設定すると、$ _ FILES配列名がIDと同じになります。他の何かを使用する必要がある場合は、name configオプションを設定すると、代わりにそれが使用されます。
items: {
xtype: 'form',
border: false,
bodyStyle: {
padding: '10px'
},
items: {
xtype: 'multifilefield',
labelWidth: 80,
fieldLabel: 'Choose file(s)',
anchor: '100%',
allowBlank: false,
margin: 0
}
},
ExtJS 4.2.2のライブデモは here です