1

そこで、サーバーにファイルをアップロードできる小さなスクリプトを自分用に作成しています。現在はうまく機能していますが、大きなファイルをアップロードしようとするとクラッシュします。ですから、それを実現するために ajax サポートを追加するとどうなるでしょうか。2. よく見える。

だから、これは私がこれまで持っているものです:

<html>
<head>
<title>File Uploader v1.0</title>
<link rel='stylesheet' href='style.css'>
<a href="index.php"><img src="img/logo.png"></a>
</head>
<body>
  <center>
    <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
      <tr>
         <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
         <td>
           <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
             <tr>
                <b>Please choose a file:</b><br/>
                <input type="file" name="fileup"/><br/>
                <br/>
                <input type="submit" name='submit' value="Upload"/>
             </tr>
        </form>
     </table>
</body>
</html>

<?php
    $uploadpath = 'upload/';        // directory to store the uploaded files
    $max_size = 103000000;          // maximum file size, in KiloBytes
    $allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png', 'rar', 'zip', 'exe', 'psd');        // allowed extensions

    if ( isset( $_FILES['fileup'] ) && strlen( $_FILES['fileup']['name'] ) > 1 ) {
       $uploadpath = $uploadpath . basename( $_FILES['fileup']['name'] );               // gets the file name
       $sepext = explode('.', strtolower( $_FILES['fileup']['name'] ) );
       $type = end($sepext);       // gets extension
       list ( $width, $height ) = getimagesize( $_FILES['fileup']['tmp_name'] );       // gets image width and height
       $err = '';         // to store the errors

       // Checks if the file has allowed type, size, width and height (for images)

       if ( !in_array($type, $allowtype)) $err .= 'The file: <b>'. $_FILES['fileup']['name']. '</b> not has the allowed extension type.';
       if ( $_FILES['fileup']['size'] > $max_size*1000) $err .= '<br/>Maximum file size must be: '. $max_size. ' KB.';

       // If no errors, upload the image, else, output the errors

       if ( $err == '' ) {
          $i = 1;
          while ( file_exists( $uploadpath ) ) {
              //get filename without suffix
              $rootname = basename( $_FILES['fileup']['name'], $type );
              $uploadpath = "upload/" . $rootname . "-$i." . $type;
              $i++;
          }
          if ( move_uploaded_file( $_FILES['fileup']['tmp_name'], $uploadpath ) ) {
              echo '<font color="green"><b>Success!</b></font>';    
              echo '<br/>File: <b>'. basename( $_FILES['fileup']['name']). '</b>';
              echo '<br/>File type: <b>'. $_FILES['fileup']['type'] .'</b>';
              echo '<br />Size: <b>'. number_format($_FILES['fileup']['size']/1024, 3, '.', '') .'</b> KB';
              echo '<br/><br/>File path: <input type="text" value="http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['REQUEST_URI']), '\\/').'/'.$uploadpath.'" readonly>';
          } else echo '<b>Unable to upload the file.</b>';
       } else echo $err;
    }
?>
</center>

あなたの誰かが私を助けてくれるなら、それは素晴らしいことです。ありがとうございました!:)

4

1 に答える 1

3

ajax/javascript スクリプトを使用してもクラッシュしないと思うなら、それは間違いです。問題はコードの動作ではありません。問題は、PHP で処理される最大アップロード サイズです。

php.ini で upload_max_filesize と post_max_size の値を設定する必要があります。

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

php.ini にアクセスできない場合は、サービス プロバイダーにアップロードのサイズを増やすよう依頼してください。これらの値は実行時に変更できません。php.ini で指定された値より大きいファイルのアップロードは、実行が ini_set への呼び出しに到達するまでに失敗します。

コア php.ini ディレクティブの説明 を参照してください。

于 2013-10-15T05:13:05.633 に答える