HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0505
Deiry1000円でソースコード作って頂けないでしょうか?6解決


Deiry

リンク

2015/5/5(Tue) 12:13:56|NO.68995

1000円でHSP⇒PHP?CGI?にファイルを
アップロードするソースコード作って頂けないでしょうか?(HSP and PHP?CGI?)
(少ない金額で申し訳ございません。)

SkypeID:
diar.ych.44まで宜しくお願い致します。(お手数ですが.を抜いたIDでコンタクト送信をお願いします。)



この記事に返信する


スペース(HSP歴3年)

リンク

2015/5/5(Tue) 15:21:41|NO.69000

久しぶりに建設的な募集スレを見た気がする。
まぁそれは置いといて、

このスレと少しずれていますが「hsp cgi」で検索すれば結構な数のサンプルコードが出てくるので、
1度自分で挑戦してみるというのも手だと思います。



prince

リンク

2015/5/5(Tue) 18:44:00|NO.69005

途中まで作りました。後はほかの人に頼みます。
PHP
http://kie.nu/2x-Y
HSP
#include "hspsock.as"
#include "hspinet.as" sdim tmp, 64 file = "" buf = "" html = "" a = 0 filesize = 0 dialog "", 16, "" if stat == 0 : end filename = refstr exist filename : filesize = strsize : sdim file, filesize : bload filename, file : filename = getpath(filename, 8) mes "アップロード中…" sockopen 0, "localhost", 80 if stat != 0 : end sendtext = strf("POST /Uplorder/upload.php HTTP/1.0\nContent-Length: %d\nContent-Type: multipart/form-data; boundary=--AAA\n\n--AAA\ncontent-disposition: form-data; name=\"upfile\"; filename=\"%s\"\n\n%s\n--AAA--", filesize, filename, file) sockput sendtext if stat != 0 : sockclose : end /*************** POST /Uploader/upload.php HTTP/1.0 Content-Length: [ファイルサイズ] Content-Type: multipart/form-data; boundary=--AAA --AAA content-disposition: form-data; name="upfile"; filename="[ファイル名]" [ファイル内容] --AAA-- ***************/ repeat await sockget tmp, 64 if stat != 0 : sockclose : end a = peek(tmp, 0) if a == 0 : break buf += tmp loop split buf, "\n\n", tmp, html nkfcnv html, html, "Ws" cls axobj ie, "Shell.Explorer.2", ginfo_winx, ginfo_winy ie -> "Navigate" "about:blank" doc = ie("Document") doc -> "write" html stop



Deiry

リンク

2015/5/6(Wed) 23:11:58|NO.69037

返信が遅れて申し訳ございません。

>>スペース(HSP歴3年)さん
ご指摘ありがとうございます。
今日1日調べてたのですが中々難しいですね・・・。
cgiに関して色々試行錯誤している最中です。

>>princeさん
おお、わざわざソースコードまでありがとうございます( _ _ )
早速これも1日中、色々思考錯誤しながら動作させていたのですがどうしてもファイルの生成にすら辿りつけませんでしたOrz
(Content-typeをjpg指定にしたり)
sendtextに追加する情報が足りないでしょうか?

もう少しヒントを頂けないでしょうか( _ _ )、宜しくお願いします。



Deiry

リンク

2015/5/7(Thu) 01:45:29|NO.69040

すいません。
何とかなりそうなので再度頑張ってみます。



prince

リンク

2015/5/7(Thu) 18:57:19|NO.69050

ちょっと説明が雑すぎましたね…
すみません。
PHPのほうは問題ないのですが、HSPのHTTPリクエストが間違ってるようです。
POSTでデータを送信するときの仕様が検索しても私にはよくわかりませんでした。
コメントを入れておきました(少し改造も)。

#include "hspsock.as" //通信用 #include "hspinet.as" //文字コード変換用 tmp = "" //一時バッファ FileBuf = "" //ファイル内容 FilePath = "" //ファイルパス FileName = "" //ファイル名 Request = "" //HTTPリクエスト Response = "" //HTTPレスポンス HTML = "" //レスポンスのうちHTMLの部分 a = 0 //受信確認用 FileSize = 0 //ファイルサイズ dialog "", 16, "" //ファイル選択 if stat == 0 : end //選択されなかったら終了 FilePath = refstr : FileName = getpath(FilePath, 8) //ファイル名・パスを変数に代入 exist FilePath : FileSize = strsize //ファイルサイズを変数に代入 sdim FileBuf, FileSize : bload FilePath, FileBuf //ファイル読み込み mes "アップロード中…" sockopen 0, "localhost", 80 //サーバーに接続 if stat != 0 : end //失敗したら終了 //データを送信(sockputbにすべきかも?) sendtext = strf({"POST /Uplorder/upload.php HTTP/1.0 Content-Length: %d Content-Type: multipart/form-data; boundary=--AAA --AAA content-disposition: form-data; name=\"upfile\"; filename=\"%s\" %s --AAA--"}, FileSize, FileName, FileBuf) sockput sendtext if stat != 0 : sockclose : end //失敗したら終了 /*************** ↓リクエストの中身 これが間違っていると思われる POST /Uploader/upload.php HTTP/1.0 Content-Length: [ファイルサイズ] Content-Type: multipart/form-data; boundary=--AAA --AAA content-disposition: form-data; name="upfile"; filename="[ファイル名]" [ファイル内容] --AAA-- ***************/ //レスポンス受信 repeat await sockget tmp, 64 if stat != 0 : sockclose : end a = peek(tmp, 0) if a == 0 : break Response += tmp loop //ヘッダ部分(使わないので適当な変数に)とHTML部分に分割 split Response, "\n\n", tmp, HTML //文字コード変換 nkfcnv HTML, HTML, "Ws" //画面リセット color 255, 255, 255 : boxf : pos 0, 0 //IEコンポーネントに表示 axobj ie, "Shell.Explorer.2", ginfo_winx, ginfo_winy ie -> "Navigate" "about:blank" doc = ie("Document") doc -> "write" HTML stop



totori

リンク

2015/5/9(Sat) 23:17:20|NO.69120

こんな感じかなと


#include "hspsock.as" //通信用 #include "hspinet.as" //文字コード変換用 tmp = "" //一時バッファ FileBuf = "" //ファイル内容 FilePath = "" //ファイルパス FileName = "" //ファイル名 Request = "" //HTTPリクエスト Response = "" //HTTPレスポンス HTML = "" //レスポンスのうちHTMLの部分 a = 0 //受信確認用 FileSize = 0 //ファイルサイズ boundary = "" // 区切り文字 reqBody = "" // リクエストボディ部 lastBody = "" // リクエストボディ部末端 reqHeader = "" // リクエストヘッダ部 bodySize = "" // リクエストボディ部サイズ host = "localhost" // アップロード先ホスト名(例:hsp.tv) uri = "/Uplorder/upload.php" // アップロードPHPまでのパス dialog "", 16, "" //ファイル選択 if stat == 0 : end //選択されなかったら終了 FilePath = refstr : FileName = getpath(FilePath, 8) //ファイル名・パスを変数に代入 exist FilePath : FileSize = strsize //ファイルサイズを変数に代入 sdim FileBuf, FileSize : bload FilePath, FileBuf //ファイル読み込み // 区切り文字(適当なランダムな文字列を使用します) randomize boundary = "---------------------------" + strf("%08x%04x%04x", FileSize, rnd(32768), rnd(32768)) mes "アップロード中…" sockopen 0, host, 80 //サーバーに接続 if stat != 0 : end //失敗したら終了 //データを送信(sockputbにすべきかも?) // 先にRequestBody部を作成(Body部のサイズが必要な為) reqBody = strf({"--%s Content-Disposition: form-data; name="upfile"; filename="%s" Content-Type: application/octet-stream "}, boundary, FileName) // RequestBody部の末端 lastBody = strf("\n--%s--", boundary) // RequestBody部のサイズを計算 bodySize = strlen(reqBody) + strlen(lastBody) + FileSize // RequestHeaderの作成 reqHeader = strf({"POST %s HTTP/1.0 Host: %s Content-Length: %d Content-Type: multipart/form-data; boundary=%s "}, uri, host, bodySize, boundary) sockput reqHeader if stat != 0 : sockclose : end //失敗したら終了 sockput reqBody if stat != 0 : sockclose : end //失敗したら終了 sockputb FileBuf, 0, FileSize if stat == 0 : sockclose : end //失敗したら終了 sockput lastBody if stat != 0 : sockclose : end //失敗したら終了 /*************** ↓リクエストの中身 これが間違っていると思われる POST /Uploader/upload.php HTTP/1.0 Content-Length: [ファイルサイズ] Content-Type: multipart/form-data; boundary=--AAA --AAA content-disposition: form-data; name="upfile"; filename="[ファイル名]" [ファイル内容] --AAA-- ***************/ //レスポンス受信 repeat await 12 sockget tmp, 64 if stat != 0 : sockclose : end a = peek(tmp, 0) if a == 0 : break Response += tmp loop //ヘッダ部分(使わないので適当な変数に)とHTML部分に分割 split Response, "\n\n", tmp, HTML //文字コード変換 nkfcnv HTML, HTML, "Ws" //画面リセット color 255, 255, 255 : boxf : pos 0, 0 //IEコンポーネントに表示 axobj ie, "Shell.Explorer.2", ginfo_winx, ginfo_winy ie -> "Navigate" "about:blank" doc = ie("Document") doc -> "write" HTML stop



ONION software Copyright 1997-2023(c) All rights reserved.