Классик asp включает однажды

public function changeProfile(Request $request,$id){

    $this->validate($request, [

        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',

    ]);

     $updateuser = User::find($id);
    if($request->hasFile('image'))
    {
        $filewithext = $request->file('image')->getClientOriginalName();
        $ext = $request->file('image')->getClientOriginalExtension();
        $fileToStrore = $filewithext;
        $path = $request->file('image')->storeAs('public/files',$fileToStrore);
        $updateuser->image = $fileToStrore;
    }


    $updateuser->save();
    return $updateuser;

 }

Этот код работает для меня. Я надеюсь, что это сработает и для вас ... Удачи ..

15
задан Jeffrey Hantin 1 May 2009 в 22:01
поделиться

5 ответов

Я знаю, что это старая тема, но я подумал, что добавлю свои два цента, если кому-то интересно.

Я написал функцию, которая делает именно то, что вы хотите: включает в данный файл ровно один, независимо от того, сколько раз он был вызван.

class ImportFunction
    private libraries_
    private fso_

    private sub CLASS_INITIALIZE
        set libraries_ = Server.createObject("Scripting.Dictionary")
        set fso_ = Server.createObject("Scripting.FileSystemObject")
    end sub

    public default property get func (path)
        if not libraries_.exists(path) then

            on error resume next
            with fso_.openTextFile(path)
                executeGlobal .readAll
                if Err.number <> 0 then 
                    Response.write "Error importing library "
                    Response.write path & "<br>"
                    Response.write Err.source & ": " & Err.description
                end if
            end with
            on error goto 0

            libraries_.add path, null
        end if
    end property
end class
dim import: set import = new ImportFunction

Примечания:

  • Здесь используется искусственная функция, смоделированная со свойством по умолчанию. Если вас это беспокоит, его легко отремонтировать.
  • Словарь должен быть постоянным для всех включений, тогда как сохранение fso просто позволяет избежать его восстановления. Если вам не нравится идея хранить их после завершения импорта, вы можете изменить класс, чтобы получить такой синтаксис:

     с новым Importer
     .import "foo"
     .import "бар / баз"
    закончить с
    
13
ответ дан 1 December 2019 в 03:15
поделиться

Нет. Сожалею. Вы должны управлять включает себя.

4
ответ дан 1 December 2019 в 03:15
поделиться

Это была одна из проблем, с которыми я впервые столкнулся после наследования устаревшего приложения ASP. Мое решение в настоящее время состоит в том, чтобы включить все файлы библиотеки родовых файлов в файл с именем 'app-init.asp'. Этот файл затем включается во все страницы и дает вам единую точку входа для подключения всей функциональности приложения и основы для построения.

2
ответ дан 1 December 2019 в 03:15
поделиться

The best you can do is using SSI to include files:

http://en.wikipedia.org/wiki/Server_Side_Includes

1
ответ дан 1 December 2019 в 03:15
поделиться

В качестве предостережения для ответа с использованием ExecuteGlobal; Я думаю, что ExecuteGlobal создает нестабильность, поскольку VBScript плохо собирает мусор и плохо управляет памятью. Это может вызвать ошибки «Катастрофический сбой» или «Исключение механизма сценариев ASP 0240», потому что вы переопределяете объект, который не был правильно удален.

Итак, чтобы использовать это, вам также нужно будет сделать свои включения. Классы, которые имеют деструкторы, и включение должно создать экземпляр класса, сохранить имя объекта в словаре, а деструктор ImportFunction должен уничтожить все объекты в Словарь.

Включаемые объекты также не должны начинаться с тегов ASP <%%>, тогда как при использовании #include это необходимо.

Также следует отметить, что ExecuteGlobal считает все X = Y присваиванием, а не сравнением, поэтому: -

isMatch = (X = Y) 'может дать ложные результаты.

Примеры включают: -

Class aClass

    Public Sub doSomething()
        ...
    End Sub

End Class

Dim instance
Set instance = new aClass

Я создал пример, аналогичный приведенному выше, но использую второй стиль передачи включения в подпрограмму или присвоение свойств.

Что он также делает, так это пытается собрать мусор с помощью уничтожение всех объектов в словаре в собственном деструкторе. Он также удаляет теги asp для библиотек, которые вы обернули.

<% 
Class Libraries

private m_LoadedLibraries
private m_FileSystem

Private Property Get LoadedLibraries
    If Not isInstantiated( m_LoadedLibraries ) Then
        Set m_LoadedLibraries = Server.CreateObject("Scripting.Dictionary")
    End If
    Set LoadedLibraries = m_LoadedLibraries
End Property

Private Property Get FileSystem
    If Not isInstantiated( m_FileSystem ) Then
        Set m_FileSystem = Server.CreateObject("Scripting.FileSystemObject")
    End If
    Set FileSystem = m_FileSystem
End Property

Private Property Get IncludePath
    IncludePath = "c:\include\"
End Property

Private Property Get LibrarySuffix
    LibrarySuffix = ".inc.asp"
End Property

Private Sub Class_Terminate()

    destroyObjects

    Set m_LoadedLibraries   = Nothing
    Set m_FileSystem        = Nothing

End Sub

Private Sub destroyObjects()
    Dim objectName
    For Each objectName in LoadedLibraries.Items
        If Eval("IsObject(" & objectName & ")") Then
            Execute "Set " & objectName & " = Nothing"
        End If
    Next
End Sub

Public Sub Include(ByVal libraryName, ByVal objectName)

    libraryName = LCase( libraryName )
    Dim library, filePath, script

    If Not LoadedLibraries.Exists( libraryName ) Then
        filePath = IncludePath + libraryName + LibrarySuffix 
        Set library = FileSystem.OpenTextFile( filePath  )
        script = library.ReadAll
        script = stripAspTags( script )
        ExecuteGlobal script
        library.Close
        LoadedLibraries.add libraryName, objectName
    End If

End Sub

Private Function stripAspTags(ByVal script)
    Dim buffer, location, startTag, stopTag, tagLength 

    startTag    = Chr(60) + "%"
    stopTag     = "%" + Chr(62)
    script      = CStr( script )
    tagLength   = Len(startTag)
    location = InStr(1, script, startTag, 1 )

    If location > 0 Then
        buffer = cleanString( Left( script, location + tagLength - 1  ) )
         ' Only strip off if it's the first part of the script
        If Len( buffer ) = Len(startTag) Then
            script = Mid( script, location + tagLength )
        End If
    End If

    location = InStrRev(script, stopTag, -1, 1 )
    If location > 0 Then
        buffer = cleanString( Mid( script, location ) )
         ' Only strip off if it's the last part of the script
        If Len( buffer ) = Len(stopTag) Then
            script = Left( script, location - 1 )
        End If
    End If
    stripAspTags = script
End Function

Private Function cleanString(ByVal target)
    Dim objRegExp

    Set objRegExp           = New Regexp

    objRegExp.IgnoreCase    = True
    objRegExp.Global        = True
    objRegExp.Pattern       = "[\x00-\x1f]+"
    cleanString             = objRegExp.Replace( target, "")

    Set objRegExp = Nothing
End Function

Private Function isInstantiated(ByVal target)
    isInstantiated = ( IsNull( target) Or IsEmpty( target ) Or Not IsObject( target) )
End Function    


End Class

Dim RequireOnce
Set RequireOnce = new Libraries
%>

Использование: -

With RequireOnce 
    .Include "aClass",        "instance"
    .Include "Database",      "DataAccess"
    .Include "Constants",     "Constant"
    .Include "LoginCheck",    "Login"
End With
1
ответ дан 1 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: