1

最終的にサーバー上に画像でいっぱいになるフォルダーを作成したいと思います.basil.jsを使用してそれらを抽出し、indesignに配置したいと思います.

スクリプトは機能しますが、URL が実際に存在するかどうかをエラー チェックする IF ステートメントが必要です。現在、その URL に実際に画像がなくても、黒いプレース ホルダーが配置されるためです。

if != url ..... したがって、FOR ループを使用する必要はありません ... ディレクトリ全体がチェックされるまで、画像を追加し続けます。

これを行う方法はおそらくありません...申し訳ありませんが、私は初心者なので、パッチの仕事を続けています。

#includepath "~/Documents/;%USERPROFILE%Documents";
#include "basiljs/bundle/basil.js";

var count = 1;
var x = 100;
var y = 100;

function draw() {

    for (i = 0; i < 15; i++) {

   var url = "http://www.minceandcheesepie.com/spaceinvaders/image" +  count + ".png";

   var newFile = new File("~/Documents/basiljs/user/data/image" + count + ".png");

  b.download(url, newFile);
  b.image('image' + count +'.png', x, y);

    x += 200; 
    y += 200;
    count++;

    app.select(NothingEnum.nothing, undefined);
    }

}
b.go();
4

1 に答える 1

1

URL の結果を確認するには、HTTP HEAD リクエストを行う必要があります。

reply = "";
conn = new Socket;

if (conn.open ("www.minceandcheesepie.com:80")) {
    // send a HTTP HEAD request
    conn.writeln("HEAD /spaceinvaders/image" + counter + ".png HTTP/1.0\r\nConnection: close\r\nHost: www.minceandcheesepie.com\r\n\r\n");
    // and read the server's reply
    reply = conn.read(999999);
    conn.close();
}

次にreply、ページが存在するかどうかを示すサーバー(サーバー応答)から文字列を取得します。次に、ページの結果によってそれを解析する必要があります(200の場合-ページが存在する場合):

var serverStatusCode = parseInt(reply.split('\n\n')[0].split('\n')[0].split(' ')[1]);
if (serverStatusCode === 200) {
    alert('exists');
} else {
    alert('not exists');
}

URL に対するサーバー応答の例:

HTTP/1.1 200 OK
Date: Wed, 16 Dec 2015 06:37:20 GMT
Server: Apache
Last-Modified: Wed, 16 Dec 2015 02:41:08 GMT
ETag: "67d-526fad6ab0af2"
Accept-Ranges: bytes
Content-Length: 1661
Connection: close
Content-Type: image/png

存在しない URL に対するサーバー応答の例:

HTTP/1.1 404 Not Found
Date: Wed, 16 Dec 2015 06:47:33 GMT
Server: Apache
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=iso-8859-1
于 2015-12-16T06:47:52.903 に答える