0 レビュー
2 回答
php-$_FILES配列が空です
ファイルをアップロードしようとしているのはこれが初めてで、何らかの理由で$_FILES配列が空です。 HTMLを何度もチェックしましたが、問題ないようです。 Eclipseで以下のコードをデバッグしようとすると、チェックすると$_Files配列が空になります。含まれているphp_iniファイルを確認しました:
- file_uploads=オン
- upload_max_filesize = 2M
フォームはfancyboxモーダルウィンドウにあります。 私のHTMLは次のようになります:
<form action="/CiREM/attachments/addAttachmentsModal.php?requestId=120" enctype="multipart/form-data" method="post" id="addattachment" name="addattachment" class="form-vertical" autocomplete="off"> <input type='hidden' id='requestId' name='requestId' value="120"/> <input type='hidden' id='listScreen' name='listScreen' value=""?> <input type='hidden' name='MAX_FILE_SIZE' value='4000000' /><br/> <strong>Max File size Allowed: </strong>4 Mb <br/><strong>File Formats Allowed: </strong>gif,jpeg,jpg,png<br/><hr/> <div class="control-group"> <div class="controls input"> <input class="input-file" type="file" name="upload_file[]" id="upload_file[]"/><br/> </div> </div> <input class="input-file" type="file" name="upload_file[]" id="upload_file[]"/><br/> </div> </div> </div> <div class ="clear"></div> <input id="addAttachmentsBtn" type="submit" class="btn btn-primary btn-large" value="Add Attachments"/> </form>
私のPHPは
<form action="<?php echo $_SERVER['PHP_SELF']."?requestId=".$requestId?>" enctype="multipart/form-data" method="post" id="addattachment" name="addattachment" class="form-vertical" autocomplete="off"> <input type='hidden' id='requestId' name='requestId' value="<?php echo $requestId;?>"/> <input type='hidden' id='listScreen' name='listScreen' value="<?php echo $listScreen;?>"?> <?php if ($CIREM['MAX_IMG_NUM']>0){ echo "<input type='hidden' name='MAX_FILE_SIZE' value='".$CIREM['MAX_IMG_SIZE']."' />"; echo "<br/> <strong>Max File size Allowed: </strong>".($CIREM['MAX_IMG_SIZE']/1000000)." Mb <br/><strong>File Formats Allowed: </strong>".$CIREM['IMG_TYPES']."<br/><hr/>";?> <?php for ($i=1;$i<=$CIREM['MAX_IMG_NUM'];$i++){?> <div class="controls input"> <input class="input-file" type="file" name="upload_file[]" id="upload_file[]"/><br/> </div> <?php }?> <?php } else{ echo "<p class='alert alert-info'>Attachment uploading is not allowed</p>"; } ?>
どんな助けでも大歓迎です。
ありがとう、 シャキーラ
わからない
0
レビュー
答え :
解決策:
そのスパゲッティコードを調べずに、まず$_POSTも空かどうかを確認します。
そうである場合は、post_max_sizeがupload_max_filesizeよりも大きいことを確認してください。 2つの設定は合同である必要があります。
わからない
0
レビュー
答え :
解決策:
最初に返信が遅れて申し訳ありませんが、スタックオーバーフローに関する古いトピックに出くわすことがあるため、私はそれが機能する方法を書くことにしました。
したがって、ajaxを介してファイルを送信するには、FormDataを使用する必要があります。
githubプロジェクトへのリンクを貼り付けます。ajaxを介してフォームを送信する必要があるため、実際の例を確認して、ここにスニペットを貼り付けることができます。
リンク: https://github.com/pihh/auto-ajax-form
コード:
$( "form" ).on('submit',function( event ) {
if($(this).attr('ajax')){
event.preventDefault();
var marianaFormUrl = $(this).attr('action');
var marianaFormId = $(this).attr('id');
var marianaFormMethod = $(this).attr('type');
var marianaFormSucess = $(this).attr('success');
var marianaFormComplete = $(this).attr('complete');
var marianaFormBefore = $(this).attr('before');
var marianaFormInputs = $('#' + marianaFormId +' :input');
var marianaEncType = $(this).attr('enctype');
var marianaFormData = {};
// Set enctype
if(marianaEncType === undefined || marianaEncType == ''){
$(this).attr('enctype','multipart/form-data');
}
// Run Ajax Call
$.ajax({
url: marianaFormUrl,
type: marianaFormMethod,
dataType: 'JSON',
data: new FormData( this ),
processData: false,
contentType: false,
cache: false,
success:function(data){
// Run success
if(marianaFormSucess !== undefined && marianaFormSucess !== ''){
var fn = marianaFormSucess;
var func = fn +'( data )';
eval(func);
}
},
complete:function(data){
// Run complete
if(marianaFormComplete !== undefined && marianaFormComplete !== ''){
var fn = marianaFormComplete;
var func = fn +'( data )';
eval(func);
}
}
});
}
});
これで、formDataを使用してファイルを正常に送信できます。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。