Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Persian
  4. روش آپلود کردن در python /pyqt(pyside)
Forum Updated to NodeBB v4.3 + New Features

روش آپلود کردن در python /pyqt(pyside)

Scheduled Pinned Locked Moved Persian
29 Posts 2 Posters 15.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Mohammadhzp
    wrote on last edited by
    #1

    p{direction:rtl; text-align:right}. سلام
    من ی برنامه ای با pyside نوشتم
    و الان برنامه نیاز داره که بتونه توی xfilesharing
    فایل آپلود کنه
    مشکل من چون که کلا با پایتون و پایساید خیلی جدید هستم(کلا با زبان سیستمی)نمیدونم باید چجوری هدر هارو ارسال کنم.یعنی کلا نمیدونم احتیاجات چی هستش
    قسمت کد آپلودر من به این صورت هستش
    @def upload(self, data, url):
    Temp = QtCore.QByteArray(data)
    if self._reply is None:
    request = QtNetwork.QNetworkRequest(QtCore.QUrl(url))
    request.setHeader(
    QtNetwork.QNetworkRequest.ContentTypeHeader,
    'multipart/form-data; boundary=---------------------------6550436631168000750764841')
    request.setRawHeader(
    QtNetwork.QNetworkRequest.ContentTypeHeader,
    'image/png')
    request.setHeader(
    QtNetwork.QNetworkRequest.ContentDispositionHeader,
    'form-data; name="image_field"; filename="icon.png"')
    request.setHeader(
    QtNetwork.QNetworkRequest.ContentLengthHeader,
    len(Temp))

            self._reply = self.parent().post(request, Temp)
            self._reply.uploadProgress.connect(self.handleUploadProgress)
            self._reply.finished.connect(self.handleFinished)@
    

    این هم فرم html من هستش که میخوام برای مثال ی عکس بفرستم
    @ <form enctype="multipart/form-data" method="post" action="123.php">
    <input type="file" size="32" name="image_field" value="">
    <input type="submit" name="Submit" value="upload">
    </form> @
    من از tamper که یک افزونه فایرفاکس هم هست استفاده کردم و این هدر هارو از اونجا گرفتم
    میشه لطفا راهنماییم کنید که کجای کارم اشتباس و باید چه چیزهایی رو تصحیح کنم
    ممنون از همگی

    1 Reply Last reply
    0
    • J Offline
      J Offline
      jmimi
      wrote on last edited by
      #2

      شما کدها رو داخل تگ کد بذارید که کسی که میخواد کمک کنه بتونه بخونه

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Mohammadhzp
        wrote on last edited by
        #3

        [quote author="jmimi" date="1389710993"]شما کدها رو داخل تگ کد بذارید که کسی که میخواد کمک کنه بتونه بخونه[/quote]

        ممنون از شما
        پست تصحیح شد

        1 Reply Last reply
        0
        • J Offline
          J Offline
          jmimi
          wrote on last edited by
          #4

          من می دونم که این کار رو نباید بکنید
          @boundary=---------------------------6550436631168000750764841@
          این رو خود آپلودر می کنه حالا میخواد براوزر باشه یا هر چی دیگه که اینجا خود پایساید ه
          ضمنا شما نگفتیدکه این کار نکردن ه یعنی چی؟ یعنی خطا می گیرید یا اینکه هیچی آپلود نمیشه ؟

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Mohammadhzp
            wrote on last edited by
            #5

            p{direction:rtl; text-align:right}. نه برنامه هیچ خطایی نداره,فقط فایل آپ نمیشه,کلی جستجو هم کردم ولی هنوز واقعا نمیدونم که طرز صحیح آپ کردن فایل چیه.هیچ ایده ای هم هنوز ندارم که چجوری حلش کنم متاسفانه,امیدوار بودم دوستان کمک کنن
            ممنون از پاسخ شما

            1 Reply Last reply
            0
            • J Offline
              J Offline
              jmimi
              wrote on last edited by
              #6

              اگه کد بیشتری بذارید شاید بشه کمکی کرد
              مثلا تو gist بذارید

              1 Reply Last reply
              0
              • M Offline
                M Offline
                Mohammadhzp
                wrote on last edited by
                #7

                p{direction:rtl; text-align:right}. من اولا هم میخواستم شروع کنم ی سری مشکل داشتم,بخاطره همین ی سوال پرسیدم و شخصی پاسخ داد,میتونین پاسخ رو در http://stackoverflow.com/a/20896359/3152155 ببینید
                بیس کد من بر پایه همین کد هستش,کلاس uploader رو من اصلا تغییری ندادم,یعنی تمام کد آپلودر من اونجا هست

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  jmimi
                  wrote on last edited by
                  #8

                  من کد رو تست کردم، آپلود می کنه.
                  اینکه شما جواب نمی گیرید به خاطر اینه که اون سایتی که دارید آپلود روش می کنید یه سری چک ها داره که شما پاس نمی کنید.
                  مثلا
                  session id
                  cookie
                  یا کلا یه فیلد خاصی که خودش گذاشته تا چک کنه که نرم افزاری نشه روش آپلود کرد
                  مثل
                  refferer
                  در کل کدی که توی اون لینک استک آورفلو دادید درست کار می کنه

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Mohammadhzp
                    wrote on last edited by
                    #9

                    کد کاملا درست کار میکنه
                    فایل آپلود میشه
                    ولی فایل به هیچ جا آپلود میشه
                    یعنی مشخص نیست که کجا میره
                    شما فایل رو آپلود کردید و از اون طرف ذخیره شد تحویل گرفتین ؟

                    1 Reply Last reply
                    0
                    • J Offline
                      J Offline
                      jmimi
                      wrote on last edited by
                      #10

                      بله من فایل رو طرف سرور دیدم که داره میاد
                      یعنی این روکوئست رو طرف سرور دیدم که میاد با حجم دیتایی که داره

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        Mohammadhzp
                        wrote on last edited by
                        #11

                        ی سوال
                        در داخل کد تغییری ایجاد کردید ؟
                        من د لوکال تست میکنم که فکر نکنم نیاز به چیزی داشته باشه
                        به نظرتون مشکل دیگه از چی میتونه باشه ؟

                        1 Reply Last reply
                        0
                        • J Offline
                          J Offline
                          jmimi
                          wrote on last edited by
                          #12

                          کد سرور لوکالتون چیه؟ یعنی می تونید اون رو بدید با اون تست کنم؟
                          تغییری ندادم.
                          شما طرف سرور می تونید ببینید که اون فایل داره میاد یا نه؟

                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            Mohammadhzp
                            wrote on last edited by
                            #13

                            متاسفانه منظورتون از کد سرور رو نمیدونم چی هست
                            من ی هندلر خطا هم اضافه کردم به این صورت
                            در کلاس
                            uploader
                            و متد
                            upload
                            من این کد رو اضافه کردم
                            @self._reply.error.connect(self.handleError)@
                            و بعدش این متد رو تعریف کردم
                            @def handleError(self):
                            print(self._reply.errorString())@

                            وقتی که خطا رو پرینت میکنه مینویسه
                            Connection refused

                            آدرس رو هم این گذاشتم
                            http://localhost:12345/01/upload/123.html
                            ولی فایده ای نداره
                            نمیدونم چطور اینکارو کنم که ببینم فایل میاد یا خیر

                            1 Reply Last reply
                            0
                            • J Offline
                              J Offline
                              jmimi
                              wrote on last edited by
                              #14

                              منظورم از کد سرور همین برنامه طرف سروره که روی پورت ۱۲۳۴۵ آوردید بالا.

                              1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                Mohammadhzp
                                wrote on last edited by
                                #15

                                راستش این دقیقا همین چیزیه که من متوجه نمیشم
                                من اصلا پورتی تعیین نکردم
                                این ۱۲۳۴۵ هم روی همون کد بود !
                                من باید روی پورت ۸۰ کار کنم چون فکر کنم وبسایت های
                                xfilesharing و کلا apache
                                روی همین پورت هستش
                                وقتی هم که :۱۲۳۴۵ رو برمیدارم قبل از اینکه پیام تمام شدن آپلود رو بده مینویسه
                                operation canceled

                                1 Reply Last reply
                                0
                                • J Offline
                                  J Offline
                                  jmimi
                                  wrote on last edited by
                                  #16

                                  این فایل داره از یک مبدایی به نام برنامه شما به یک مقصدی به نام سرور میره.
                                  من فکر می کنم که شما اصلا سروری ندارید. یعنی برنامه طرف سرور ندارید که دارید تست می کنید.
                                  کانکشن ویفیوز هم به همین خاطره. یعنی هیچی تو اون آدرسی که شما دارید میدید نیست.
                                  این http://localhost:12345/01/upload/123.html خالیه.
                                  باید یک برنامه سرور روی این آدرس باشه تا بتونه فایل شما رو بگیره و گر نه چی میخواد فایل شما بگیره؟!

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    Mohammadhzp
                                    wrote on last edited by
                                    #17

                                    دوستم واقعا ممنونم از کمکت به من
                                    منظورتون از برنامه سرور همون وب سرور هستش ؟
                                    من روی لوکال آپاچی دارم
                                    اون سایتی هم که در آخر باید روش کار کنم اسکریپت
                                    xfilesharing
                                    داره که روی آپاچی هستش
                                    ببخشید واقعا من در این زمینه اطلاعات ضعیفی دارم و دقیقا نمیدونم باید چیکار کنم.به همین خاطر به مشکل خوردم
                                    ممنون

                                    1 Reply Last reply
                                    0
                                    • J Offline
                                      J Offline
                                      jmimi
                                      wrote on last edited by
                                      #18

                                      خواهش می کنم.
                                      آره منظور همون وب سروره
                                      همین آپاچی خودش وب سروره ولی کار خاصی نمی کنه.
                                      شما باید یک برنامه ای داشته باشید که فایل رو ذخیره می کنه و روی این آپاچی بیاریدش بالا.
                                      آپاچی فقط پروتکل http رو پیاده سازی کرده . البته خیلی کارای دیگه می کنه که الان به دردمون نمی خوره.
                                      آپاچی رکوئست رو می گیره و تحویل اون برنامه ای میده که داره فایل رو ذخیره می کنه و روی خودش هاست کرده. هاست کرده یعنی اینکه آورده بالا.
                                      این برنامه هه همونیه که بهش اشاره کردم برنامه طرف سرور.

                                      1 Reply Last reply
                                      0
                                      • M Offline
                                        M Offline
                                        Mohammadhzp
                                        wrote on last edited by
                                        #19

                                        خیلی ممنون از کمکتون دوستم
                                        دوستم الان ی سری برنامه ها هستن که فایل رو آپلود میکنن روی هاست های فایل مثل "این":http://z-o-o-m.eu/
                                        تعداد زیادی هاست هم پشتیبانی میکنه
                                        تا اونجایی که من هم اطلاع دارم برای همین هاست مورد نظر من برنامه ای با زبان پرل نوشته شده که خود به خود فرم اچ تی ام ال رو پیدا میکنه(طبق هدر هایی که ارسال میشه) و فایل رو سابمیت میکنه بدون برنامه خاصی
                                        راهی هست که به این صورت بشه کار رو پیش برد ؟
                                        و اگر جواب منفی هستش
                                        میشه مستنداتی و یا مقاله ی ساده ای در این رابطه و همچنین اسم برنامه رو بگین تا من روی این کار کنم ؟
                                        ممنون

                                        1 Reply Last reply
                                        0
                                        • J Offline
                                          J Offline
                                          jmimi
                                          wrote on last edited by
                                          #20

                                          نه اینا به درد این کار نمی خوره. چون اینا یک کلاینت هستند.
                                          چیزی که مدنظر شماست اینه که کار همین ها رو انجام بدید.
                                          مگر اینکه یکی از این اپلیکیشن ها باشند که اپی داشته باشند و شما از اپی اونا تو برنامه کیوت خودتون استفاده کنید. اون موقع از شر اون اچ تی تی پی بازیا هم خلاص می شید.
                                          اگر هم اینا اپی ندارند و می خواید که روی یک اپلیکیشن سرور کار کنید ، یه سرچ بزنید که مثلا سمپل کد آپلود فایل تو پی اچ پی رو داشته باشه. بعدش اونو توی آپاچی بیاریدش بالا.

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved