اعتدت أن أحصل على هذه الطريقة في المشروع ، ولكن في الآونة الأخيرة كانت هناك مشكلة مع العميل. قال زميلي إن هذه الطريقة لم تنجح أبدًا. لذلك ، أخذت يومًا لإخراج هذه الطريقة (أعتقد أن الأمر استغرق وقتًا أطول قليلاً) ومشاركته.
حالات الكود والاختبار:
var http = require ('http') ؛ var path = require ('path') ؛ var fs = require ('fs') ؛ وظيفة postfile (fileKeyValue ، req) {var boundarykey = math.random (). tostring (16) ؛ var enddata = '/r/n ----' + boundarykey + '-' ؛ ملفات var = Array () ؛ لـ (var i = 0 ؛ i <fileKeyValue.length ؛ i ++) {var content = "/r/n ----" + boundarykey + "/r/n" + "content-type: application/octet-stream/n" + "disposition: form-data ؛ name =" + fileKeyValue [i] path.basename (fileKeyValue [i] .rlvalue) + "/"/r/n " +" ترميز المحتوى: ثنائي/r/n/r/n "؛ var contentBinary = New Buffer (المحتوى ، 'UTF-8') ؛ // عندما يكون الترميز ASCII ، سيتم تشويه الصينية. files.push ({contentBinary: ContentBinary ، filePath: fileKeyValue [i] .urlvalue}) ؛ } var contentLength = 0 ؛ لـ (var i = 0 ؛ i <files.length ؛ i ++) {var stat = fs.statsync (files [i] .filePath) ؛ contentLength += files [i] .ContentBinary.Length ؛ contentLength += Stat.size ؛ } req.setheader ('نوع المحتوى' ، 'multipart/form-data ؛ boundary =-' + boundaryKey) ؛ req.setheader ('content-length' ، contentLength + buffer.bytelength (endData)) ؛ // إصدار المعلمة var fileIndex = 0 ؛ var doOneFile = function () {req.write (files [fileIndex] .ContentBinary) ؛ var fileStream = fs.createadStream (ملفات [fileIndex] .filePath ، {bufferSize: 4 * 1024}) ؛ filestream.pipe (req ، {end: false}) ؛ filestream.on ('end' ، function () {fileIndex ++ ؛ if (fileIndex == files.length) {req.end (endData) ؛} else {doOneFile () ؛}}) ؛ } ؛ if (fileIndex == files.length) {req.end (endData) ؛ } آخر {doOneFile () ؛ }} // test case // http: //nodejs.org/api/http.html#http_http_request_options_callbackvar files = [{urlkey: "file1" ، urlvalue: "e: //dfbf "e: //1.jpg"} ، {urlkey: "file3" ، urlvalue: "e: // prope space inchoval.mp3"}] var reports = {host: "localhost" ، port: "8908" ، method: "post" ، path: الدقة) ؛ console.log ('مشكلة مع الطلب:' + e.message) ؛ console.log ("Done") ؛لاختبار الخادم ، استخدم MVC لكتابة طريقة تحميل على وحدة تحكم المنزل ، وتجتاز الملف الذي تم تحميله وحفظه على القرص الثابت.
إنه مجرد وجود مشاكل في تحميل الملفات الكبيرة. تشير التقديرات إلى أنه يجب تكوين الخادم ، لذلك لا تقلق بشأنه الآن.
طريقة جانب الخادم (اكتب تحت وحدة تحكم المنزل)
[httppost] public string upload () {// httppostedfileBase file = this.request.files ["file"] ؛ //file.saveas(file.filename) ؛ foreach (ملف السلسلة في this.request.files) {this.request.files [file] .saveas (@"e:/new folder/" + this.request.files [file] .filename) ؛ } return @"Save Success Path: E:/New Folder/" ؛ }قم بتشغيل البرنامج النصي:
عقدة nodejspostfile.js
نتائج التشغيل: