Apakah ada kelas, pustaka atau beberapa kode yang akan membantu saya mengunggah file dengan HTTPWebrequest ?
Edit 2:
Saya tidak ingin mengunggah ke folder WebDAV atau sesuatu seperti itu. Saya ingin mensimulasikan browser, jadi sama seperti Anda mengunggah avatar Anda ke forum atau mengunggah file melalui formulir di aplikasi web. Unggah ke formulir yang menggunakan multipart / formulir-data.
Edit:
WebClient tidak mencakup persyaratan saya, jadi saya mencari solusi dengan HTTPWebrequest .
.net
upload
httpwebrequest
dr. jahat
sumber
sumber
Jawaban:
Mengambil kode di atas dan memperbaikinya karena melemparkan Internal Server Error 500. Ada beberapa masalah dengan \ r \ n posisi dan spasi yang buruk, dll. Menerapkan refactoring dengan aliran memori, menulis langsung ke aliran permintaan. Inilah hasilnya:
dan penggunaan sampel:
Itu dapat diperluas untuk menangani beberapa file atau cukup menyebutnya beberapa kali untuk setiap file. Namun itu sesuai dengan kebutuhan Anda.
sumber
"\r\n--" + boundary + "--\r\n"
Jika tidak, file tambahan akan terpotong.Saya mencari sesuatu seperti ini, Ditemukan di: http://bytes.com/groups/net-c/268661-how-upload-file-via-c-code (dimodifikasi untuk kebenaran):
sumber
UPDATE: Menggunakan .NET 4.5 (atau .NET 4.0 dengan menambahkan paket Microsoft.Net.Http dari NuGet) ini dimungkinkan tanpa kode eksternal, ekstensi, dan manipulasi HTTP "level rendah". Berikut ini sebuah contoh:
sumber
FAQ Upload ASP.NET saya memiliki artikel tentang ini, dengan kode contoh: Unggah file menggunakan permintaan POST RFC 1867 dengan HttpWebRequest / WebClient . Kode ini tidak memuat file ke dalam memori (tidak seperti kode di atas), mendukung banyak file, dan mendukung nilai formulir, mengatur kredensial dan cookie, dll.
Sunting: sepertinya Axosoft menurunkan halaman. Terima kasih kawan
Itu masih dapat diakses melalui archive.org.
sumber
Berdasarkan kode yang diberikan di atas, saya menambahkan dukungan untuk banyak file dan juga mengunggah aliran secara langsung tanpa perlu memiliki file lokal.
Untuk mengunggah file ke url tertentu termasuk beberapa postingan lakukan hal berikut:
Untuk meningkatkan ini lebih banyak lagi yang bisa menentukan nama dan tipe pantomim dari file yang diberikan itu sendiri.
sumber
sesuatu seperti ini dekat: (kode yang belum diuji)
sumber
Saya pikir Anda sedang mencari sesuatu yang lebih seperti WebClient .
Secara khusus, UploadFile () .
sumber
Mengambil di atas dan memodifikasinya menerima beberapa nilai header, dan beberapa file
sumber
\r\n--" + boundary + "--\r\n
Contoh VB (dikonversi dari contoh C # pada posting lain):
sumber
Saya harus berurusan dengan ini baru-baru ini - cara lain untuk mendekatinya adalah dengan menggunakan fakta bahwa WebClient adalah turunan, dan mengubah WebRequest yang mendasarinya dari sana:
http://msdn.microsoft.com/en-us/library/system.net.webclient.getwebrequest(VS.80).aspx
Saya lebih suka C #, tetapi jika Anda terjebak dengan VB hasilnya akan terlihat seperti ini:
sumber
Ada contoh kerja lain dengan beberapa komentar saya:
Dan ada contoh menggunakan:
sumber
Saya mencari untuk melakukan unggah file dan menambahkan beberapa parameter ke permintaan multipart / form-data di VB.NET dan tidak melalui pos formulir biasa. Terima kasih untuk jawaban @JoshCodes saya mendapatkan arahan yang saya cari. Saya memposting solusi saya untuk membantu orang lain menemukan cara untuk melakukan posting dengan file dan parameter yang setara dengan html dari apa yang saya coba capai adalah: html
Karena kenyataan bahwa saya harus memberikan apiKey dan tanda tangan (yang merupakan checksum dihitung dari parameter permintaan dan string kunci gabungan string api), saya perlu melakukannya di sisi server. Alasan lain yang perlu saya lakukan adalah sisi server adalah fakta bahwa postingan file dapat dilakukan kapan saja dengan menunjuk ke file yang sudah ada di server (menyediakan path), sehingga tidak akan ada file yang dipilih secara manual selama form posting sehingga bentuk file data tidak akan berisi aliran file. Sebaliknya saya bisa menghitung checksum melalui panggilan balik ajax dan mengirimkan file melalui posting html menggunakan JQuery. Saya menggunakan .net versi 4.0 dan tidak dapat memutakhirkan ke 4,5 dalam solusi aktual. Jadi saya harus menginstal Microsoft.Net.Http menggunakan nuget cmd
sumber
Kode @CristianRomanescu yang dimodifikasi untuk bekerja dengan aliran memori, menerima file sebagai array byte, memungkinkan null nvc, mengembalikan respons permintaan, dan bekerja dengan header Otorisasi. Menguji kode dengan Web Api 2.
Kode uji:
sumber
Bagi saya, karya-karya berikut (sebagian besar diinspirasi dari semua jawaban berikut), saya mulai dari jawaban Elad dan memodifikasi / menyederhanakan hal-hal yang sesuai dengan kebutuhan saya (hapus bukan masukan file formulir, hanya satu file, ...).
Semoga bisa membantu seseorang :)
(PS: Saya tahu bahwa penanganan pengecualian tidak dilaksanakan dan mengasumsikan bahwa itu ditulis di dalam kelas, jadi saya mungkin perlu upaya integrasi ...)
sumber
Tidak yakin apakah ini diposting sebelumnya, tetapi saya berhasil menggunakan WebClient ini. saya membaca dokumentasi untuk WebClient. Poin kunci yang mereka buat adalah
Jadi yang saya lakukan adalah wc.QueryString.Add ("source", generateImage) untuk menambahkan parameter kueri yang berbeda dan entah bagaimana itu cocok dengan nama properti dengan gambar yang saya unggah. Semoga ini bisa membantu
sumber
Saya menulis sebuah kelas menggunakan WebClient kembali ketika melakukan unggahan formulir multi bagian.
http://ferozedaud.blogspot.com/2010/03/multipart-form-upload-helper.html
Ini akan bekerja dengan semua versi framework .NET.
sumber
Saya tidak pernah bisa mendapatkan contoh berfungsi dengan baik, saya selalu menerima 500 kesalahan saat mengirimnya ke server.
Namun saya menemukan metode yang sangat elegan untuk melakukannya di url ini
Ini mudah diperluas dan jelas berfungsi dengan file biner serta XML.
Anda menyebutnya menggunakan sesuatu yang mirip dengan ini
sumber
Lihat perpustakaan MyToolkit:
http://mytoolkit.codeplex.com/wikipage?title=Http
sumber
Klien menggunakan Convert file to
ToBase64String
, setelah menggunakan Xml untuk menyebarluaskan panggilan Server, server ini menggunakanFile.WriteAllBytes(path,Convert.FromBase64String(dataFile_Client_sent))
.Semoga beruntung!
sumber
Metode ini berfungsi untuk mengunggah banyak gambar secara bersamaan
sumber
Saya menyadari ini mungkin sangat terlambat, tetapi saya sedang mencari solusi yang sama. Saya menemukan respons berikut dari perwakilan Microsoft
sumber