ファイル

Q 10
ローカルにあるファイルを分割したい
[内容]
ネットワークやサーバへの負荷軽減のため、サーバへのファイルアップロードするファイルを分割したい

A 10
[解決方法]
1つのファイルを複数のファイルへ分割する方法として、File.ReadBinaryメソッドを利用する方法があります。
File.ReadBinaryメソッドは、ファイルの現在位置から指定したバイトのデータを読込み、読込んだデータをByteArrayオブジェクトで返します。 File.ReadBinaryメソッドを利用して指定のバイト数データを読込み新規にファイルを作成するといった処理を繰返して行う事でファイルを分割する事が可能です。

下記サンプルコードでは、ユーザが「ファイル選択」したファイルを10バイトずつ読込み新規作成したファイルへ出力しています。

[サンプルコード] ※記述ポイント抜粋
  Button Button1 {
    X = 86;
    Y = 155;
    Width = 193;
    Height = 85;
    Title = "ファイルの読込み&出力";
    
    Function OnTouch( e ) {
      var data;
      var i = 0;
      var fs = new FileSystem;
      try{
        var f = fs.openDialog("ファイルを開く","","","");
        
        do{
          /* openしたファイルから10バイト毎読込み */
          data = f.ReadBinary(10);
          
          if(data.length <= 0){
            /* データを全て出力し終わったら終了 */
            break;
          }
          /* 読込んだ10バイトのデータを出力 */
          var fsi = new FileSystem;
          var fi = fsi.Open(str(i) ,FileSystem.OPEN_WRITE);
          fi.Write(data);
          fi.Close();
          
          /* ファイル番号のインクリメント */
          i ++;
          
        /* 全てのデータの読込み&出力が終了するまでループ */
        }while(data.length > 0)
        
        f.Close();
               
      }catch(e){
        //.MessageBox(e.Message);
        return;
      }
    }
  }

CRSファイル形式のサンプル
   「ファイル分割サンプル (Fil_010.zip)
もご参照ください。

また、ファイルのアップロードについては以下をご参照ください。

[参照]
ファイルアップロード(Biz/Browser全般)
ファイルアップロード(Biz/Browser V)

管理番号:Fil_010
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ