لا يمكن كتابة ملف في ASP الكلاسيكية
-
23-08-2019 - |
سؤال
حسنا، لقد مر بعض الوقت منذ أن عملت مع ASP الكلاسيكية، لذلك أنا صدئ بعض الشيء. هنا سؤالي.
أحاول كتابة ملف إلى نظام الملفات باستخدام FSO. الرمز أدناه بسيط جدا. ومع ذلك، فإن الملف لا يظهر ولا توجد أخطاء تظهر. أعلم أنه يعمل على تشغيل التعليمات البرمجية لأنني يمكنني إضافة استجابة. كتابة قبل وبعد هذا المقتطف وظهور كلاهما في الإخراج. ومع ذلك، لا يتم إنشاء ملف، أي خطأ يتم طرحه. لقد غيرت حتى ذلك حتى هو مسار وهمية لإجبار خطأ. لا النرد. أضفت الجميع لقراءة وكتابة أذونات الدليل. ما زال كما هو.
الأفكار؟
إليك الرمز الخاص بي:
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'Open the text file
Dim objTextStream
Set objTextStream = objFSO.OpenTextFile("d:\test.txt", True)
'Display the contents of the text file
objTextStream.WriteLine "howdy"
'Close the file and clean up
objTextStream.Close
Set objTextStream = Nothing
Set objFSO = Nothing
المحلول
جرب هذا:
<%
if Append = true then
iMode = 8
else
iMode = 2
end if
set oFs = server.createobject("Scripting.FileSystemObject")
set oTextFile = oFs.OpenTextFile("C:\wwwroot\Test.txt", iMode, True)
oTextFile.Write "Test Content"
oTextFile.Close
set oTextFile = nothing
set oFS = nothing
%>
حاولت هذا محليا، بعد تحديد الأذونات على الدليل الخاص بي وعملت.
يمكنك الحصول على المصدر الأصلي من هنا:http://www.freevbcode.com/showcode.asp؟id=89.
نصائح أخرى
السبب المحتمل الوحيد الذي لا ينتج عنه الرمز رسالة خطأ، هو أن لديك هذا في صفحتك:
On Error Resume Next
هذا سيء، لسبب رأيته للتو. يتجاهل بصمت فقط أي رسائل خطأ، وتتركك دون أدنى فكرة عن سبب عدم العمل كما هو متوقع.
(يجب أن تستخدم فقط للأجزاء المعزولة من التعليمات البرمجية حيث تتوقع خطأ، والتحقق في الواقع لحالة خطأ بعد كل عملية.)
قم بإزالة ذلك من صفحتك، ورسالة الخطأ التي ربما تحصل عليها هي أن المعلمات غير صالحة للمكالمات على هذا السطر:
Set objTextStream = objFSO.OpenTextFile("d:\test.txt", True)
لقد نسيت المعلمة الثانية، والتي هي وضع الإدخال / الإخراج. يجب عليك استخدام القيمة 1 للكتابة:
Set objTextStream = objFSO.OpenTextFile("d:\test.txt", 1, True)
بدلا من ذلك، يمكنك استخدام CreateTextFile
الطريقة بدلا من ذلك:
Set objTextStream = objFSO.CreateTextFile("d:\test.txt", True)