人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

携帯から画像をWEBサーバにアップさせたいです。
以下URLのように画像の参照先を選んでサーバにアップする機能はcgiでしょうか?詳しく実現方法を教えてください。
http://mixi-tips.jp/function/images/diary/3_1.gif
※あくまで携帯からの実現方法です。PCからの方法は求めていません。


●質問者: inoue5231
●カテゴリ:インターネット ウェブ制作
✍キーワード:CGI Web サーバ 携帯 画像
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● chrono1742
●25ポイント

携帯から画像ファイルをメール添付して、受信したサーバ側で処理することになります。

したがって、サーバ側にメール受信サーバ(POP3)と、スクリプト言語が走る環境が必要です。

下記のようなスクリプトが販売されています。

http://www.kujirakun.com/upload2.html

◎質問者からの返答

mixiで写真をアップした場合メールを送っているようには見えなかったのですが…

携帯のブラウザからメールを送っているという事ですかね

回答ありがとうございました。

追記 検索していたら見つけました。xhtmlのinput要素type="file"で実現出来るようです。

まだ他の方法も募集します。


2 ● chrono1742
●0ポイント

> xhtmlのinput要素type="file"で実現出来るようです


それだと、古い携帯では使えませんよ。

(参考)http://q.hatena.ne.jp/1189816353

◎質問者からの返答

3Gに対応していれば十分だと考えています。


3 ● ymlab
●100ポイント ベストアンサー

スクリプト言語を使います。

別にcgi(perl)でもOKですし、PHPでもOKです。

最近はrubyもありかと思います。

http://www.aimix.jp/cgi/acccgilibupfile.html

http://plog.pya.jp/program/php/lesson11/sample01.html

http://www.openspc2.org/reibun/Ruby/cgi_form/005/



最近PHPで携帯から画像をアップロードする仕事をしましたので、

ソースコードを書いておきます。

やっていることはPCでのアップロードと変わらないと思います。

ただし、アップロードした後で、携帯サイトでみることを考えて、

圧縮をしていますが。

 1 <?php

 2     //画像をアップロードする.

 3     /** {{{*/

 4     for ( $iCounter = 1; $iCounter < count($imagealt)+1; $iCounter++ ) {

 5         //if ( $imageName[$iCounter] != "" ) {

 6         if ( $_FILES["image".$iCounter]['name'] != "" ) {

 7             //画像のアップロードは、空白ならなにもしない。

 8         

 9             $tmp = "image".$iCounter;

10             $extension = strtolower( strrchr( $_FILES["$tmp"]['name'], '.'));

11             if ( $extension == ".jpg|| $extension == ".png){ 

12                 //指定された拡張子以外はアップロードしない

13                 if ( is_uploaded_file( $_FILES["$tmp"]['tmp_name'] ) ) {

14                     //アップロード

15                     //ファイルのおき場所は、月日10*ダイアリーカウント+$iCounterとしよ。

16                     $localfilename = 10*$diarycount+$iCounter.$extension;

17                     $filepath = getcwd();

18                     $dd = $day;

19                     if ( strlen( $dd ) < 2 ) {

20                         $dd = "0".$dd;

21                     }

22                     $filepath .= "/../db/diary/${year}-${month}/img/$dd$localfilename";

23                     //$directorypath = getcwd();

24                     //$directorypath .= "/../db/diary/${year}-${month}/img/";

25                     //画像を圧縮する場合・・。

26                     if ( $_REQUEST["iscompress".$iCounter] == "on) {

27                         //画像を圧縮してアップロードする.

28                         $temp = $_FILES["$tmp"]['tmp_name'];

29                         createFiles( $temp, $filepath, $extension, 640 );

30                     } else {

31                         //画像を圧縮せずにアップロードする.

32                         move_uploaded_file( $_FILES["$tmp"]['tmp_name'], $filepath );

33                     }

34                     $imageUrl[$iCounter] = "${year}-${month}/img/$dd$localfilename";

35                     chmod($filepath, 0666);

36

37                     //どちらにしても、携帯電話用の画像はアップロードする.

38                     $filepath_s = getcwd();

39                     $localfilename = 10*$diarycount+$iCounter."_s".$extension;

40                     $filepath_s .= "/../db/diary/${year}-${month}/img/$dd$localfilename";

41                     createFiles( $_FILES["$tmp"]['tmp_name'], $filepath_s, $extension, 160 );

42                     chmod($filepath_s, 0666);

43                     //最近の携帯電話は、解像度が大きいので中くらいのサムネイル画像も作っておく。

44                     $filepath_tiny = getcwd();

45                     $localfilename_t = 10*$diarycount+$iCounter."_t".$extension;

46                     $filepath_tiny .= "/../db/diary/${year}-${month}/img/$dd$localfilename_t";

47                     createFiles( $_FILES["$tmp"]['tmp_name'], $filepath_tiny, $extension, 320);

48                     chmod($filepath_tiny, 0666);

49                 }

50             }

51         } else {

52             //アップロードされている状態で、さらに変化をさせなかったので、

53             //そのままURL情報を残しておく.でも削除ボタンがOnの時は、情報を消す.

54             if ( $imageIsDelete[$iCounter] != "on) {

55                 $imageUrl[$iCounter] = _hs($_REQUEST["imageurl$iCounter"]);

56             } else {

57                 //削除する.

58                 $x = _hs($_REQUEST["imageurl$iCounter"]);

59                 $url = "../db/diary/".$x;

60                 $imageUrl[$iCounter] = "";//まずURL情報を消す.

61                 //アップロードされたファイルを削除する.

62                 chown($url, "nobody");

63                 chmod($url, 0777);

64                 unlink($url);

65

66                 //サムネイル画像もあれば削除する.

67                 $urls_ex = strrchr( $url, '.);//携帯画像の拡張子

68                 $a = substr($url, 0, strlen($url)-strlen($urls_ex));

69                 $a .= "_s";

70                 $a .= $urls_ex;

71                 if ( file_exists( $a ) ) {

72                     chown($a, "nobody");

73                     chmod($a, 0777);

74                     unlink($a);

75                 }

76             }

77         }

78     }

◎質問者からの返答

コードまで書いていただきありがとうございます。

とても参考になりました。これで作ってみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ