تشارك هذه المقالة رمزًا محددًا لتنزيل ملف Servlet للرجوع إليه. المحتوى المحدد كما يلي
ليس من الآمن فضح دليل الملف مباشرة إلى المستخدم. لذلك عليك استخدام Servlets ، وبهذه الطريقة ، سيتم تخزين الملفات بشكل أكثر وفرة. يمكن استردادها من نظام الملفات ، أو أنشأتها عن طريق الحسابات في قاعدة البيانات ، أو استردادها من أماكن غريبة أخرى.
تنزيل الفئة العامة يمتد httpservlet {private string contentType = "Application/x-msdownload" ؛ سلسلة خاصة enc = "utf-8" ؛ سلسلة خاصة fileRoot = "" ؛ / ** * تهيئة contentType ، ENC ، fileroot */ public void init (servletconfig config) يلقي servleTexception {String tempster = config.getInitParameter ("contentType") ؛ if (tempstr! = null &&! tempstr.equals ("")) {contentType = tempStr ؛ } tempstr = config.getInitParameter ("ENC") ؛ if (tempstr! = null &&! tempstr.equals ("")) {enc = tempster ؛ } tempstr = config.getInitParameter ("fileroot") ؛ if (tempstr! = null &&! tempstr.equals ("")) {fileRoot = tempStr ؛ }} doget void المحمية (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {string filepath = request.getParameter ("filepath") ؛ سلسلة FullFilePath = fileroot + filepath ؛ /*قراءة الملف*/ ملف = ملف جديد (FullFilePath) ؛ /*إذا كان الملف موجودًا*/ if (file.exists ()) {String filename = urlencoder.encode (file.getName () ، enc) ؛ استجابة. reset () ؛ استجابة. Response.addHeader ("Disposition" ، "المرفق ؛ اسم الملف =/" " + filename +"/"") ؛ int fileLength = (int) file.length () ؛ استجابة. /*إذا كان طول الملف أكبر من 0*/ if (filelength! = 0) {/*إنشاء دفق إدخال*/ inputStream instream = جديد fileInputStream (ملف) ؛ Byte [] buf = new byte [4096] ؛ /*إنشاء دفق الإخراج*/ servleTOutputStream servletos = response.getOutputStream () ؛ int readlength ؛ بينما (((readlength = instream.read (buf))! = -1)) {servletos.write (buf ، 0 ، readlength) ؛ } instream.close () ؛ servletos.flush () ؛ servletos.close () ؛ }}} web.xml
<Vervlet> <vishlet-name> downloadservlet-name> <Servlet-class> org.mstar.servlet.downloadservletservlet-class> <Ing-param> <Param-Name> filerootparam-name> <Parm-value> d:/tempparam-value> init-param> <Param-value> Application/x-msdownloadparam-value> init-param> <Init-param> <Param-Name> Encparam-Name> <Param-value> utf-8param-value >>> init-param> servlet> <Servlet-mapping>
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.