Inhaltsverzeichnis
Vorwort
PHP-Versionseinschränkungen
Upgrade von WAMP 2.5-3.1
Heim Backend-Entwicklung PHP-Tutorial PHP-Upload-Dateien mit Azure Storage Blob

PHP-Upload-Dateien mit Azure Storage Blob

Jul 05, 2018 pm 02:04 PM
php使用

Dieser Artikel stellt hauptsächlich die Verwendung von Azure Storage Blob zum Hochladen von Dateien vor. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.

Vorwort

Aufgabe Wenn es um ein Projekt geht, eine kleine Website, die Content-Management erfordert, werden die Front-End-Seitenanzeige und Spezialeffekte von Front-End-Kollegen erledigt. Ich bin für den Aufbau des Content-Management-Backends und die Bereitstellung von Datenschnittstellen verantwortlich. Dieses Projekt erfordert, dass die Verwaltungsseite Videos hochladen kann, aber die von Partei A bereitgestellte Serverbandbreite ist sehr gering und es gibt andere Projekte, die parallel auf demselben Server laufen.
Um die späteren Auswirkungen plötzlicher Upgrades zu verhindern, schlug der Teamleiter vor, dass ich den Umgang mit Azure Storage Blob lerne und jederzeit für Upgrades bereit bin.

PHP-Versionseinschränkungen

Ich habe das offizielle SDK in Github gefunden.

Mindestanforderungen

PHP 5.6 oder höher

Da die lokal konfigurierte PHP-Umgebung 5.5.12 ist und das SDK Erfordert Die Mindestversion von PHP ist 5.6, Composer hat das Update
blockiert, daher habe ich composer update --ignore-platform-reqs verwendet, um die Bedarfsüberwachung zu umgehen und das Upgrade zu erzwingen.
Wenn const jedoch auf ein Array in der Klasse BlobResources.php gesetzt ist, wird in 5.5 ein Fehler gemeldet.

Fatal error: Arrays are not allowed in class constants in E:\webroot\tp5cms\vendor\microsoft\azure-storage-blob\src\Blob\Internal\BlobResources.php on line 103
Nach dem Login kopieren

Es bleibt keine andere Wahl, als PHP zu aktualisieren.

Upgrade von WAMP 2.5-3.1

Aus Entwicklungsgründen haben wir uns entschieden, wampserver auf die neueste Version zu aktualisieren.
Beim Wamp-Upgrade gibt es einen Trick: Sie können die Installation nicht direkt überschreiben. Sie müssen zuerst die alte Version entfernen und dann die neue Version installieren.
Lesen Sie die Upgrade-Tipps sorgfältig durch.
Zusammenfassend müssen Sie wahrscheinlich die folgenden zwei Dinge tun:

  • Dienst entfernen

    WampServer starten
    [Wichtig] Melden Sie sich bei MySQL an, um alle Datenbankdaten zu sichern.
    wampmanager -> MySQL-Dienst entfernen.
    wampmanager -> -> Dienst entfernen Entfernen Sie den Apache-Dienst
    stoppen Sie wampmanager
    Rechtsklick auf wampmanager -> 🎜>Will wamp Nennen Sie einen anderen Namen für die Sicherung

  • Installieren Sie den Speicheremulator

    Da es im Unternehmen kein Azure-Konto zum Testen gibt, hat Azure glücklicherweise eines ein Speicheremulator zum Testen und Entwickeln. Windows-Systeme können direkt heruntergeladen und installiert werden, Linux-Systeme können den Open-Source-Speicheremulator Azurite nutzen.

    Laden Sie den Emulator herunter, hier ist der Download-Link.

Nachdem die Installation abgeschlossen ist, führen Sie

aus und finden Sie eine Eingabeaufforderung, die Sie zur Installation benötigen

. Hier finden Sie einen Download-Link. Wählen Sie Express Edition und dann LocalDB zum Herunterladen und Installieren aus.
  1. Führen Sie cmd erneut aus und finden Sie einen Fehler
  2. C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator>AzureStorageEmulato
    r.exe start
    Windows Azure Storage Emulator 5.3.0.0 command line tool
     
    未经处理的异常: System.TimeoutException: Unable to open wait handle.
    在 Microsoft.WindowsAzure.Storage.Emulator.Controller.EmulatorProcessControll
    er.InternalWaitForStorageEmulator(Int32 timeoutInMilliseconds)
    在 Microsoft.WindowsAzure.Storage.Emulator.Controller.EmulatorProcessControll
    er.EnsureRunning(Int32 timeoutInMilliseconds)
    在 Microsoft.WindowsAzure.Storage.Emulator.Commands.StartCommand.RunCommand()
     
    在 Microsoft.WindowsAzure.Storage.Emulator.Program.Main(String[] args)
    Nach dem Login kopieren
    StartStorageEmulator.cmdNach einer Abfrage stellte ich fest, dass dies daran lag, dass ein Prozess Port 10000 belegte. SQL Server Express Local DB
    #运行:>C:\Users\Walter>netstat -p tcp -ano | findstr :10000> TCP 127.0.0.1:10000 0.0.0.0:0 LISTENING 2664
     #根据PID 2664查询对应的进程>C:\Users\Walter>tasklist | findstr "2664">YunDetectService.exe 2664 Console 1 9,944 K
     
    #只是一个不重要的进程,去掉后继续开发>C:\Users\Walter>taskkill /pid 2664 /f>成功: 已终止 PID 为 2664 的进程。
     
    #以下是模拟器成功运行的范例>C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator>AzureStorageEmulator.exe start
    Windows Azure Storage Emulator 5.3.0.0 command line tool
    The storage emulator was successfully started. 
    >C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator>AzureStorageEmulator.exe status
    Windows Azure Storage Emulator 5.3.0.0 command line tool
    IsRunning: True
    BlobEndpoint: http://127.0.0.1:10000/QueueEndpoint: http://127.0.0.1:10001/TableEndpoint: http://127.0.0.1:10002/
    Nach dem Login kopieren

  3. Entwicklung starten
  4. Sie können anhand offizieller Beispiele versuchen, Container-, Blob- und Löschfunktionen hinzuzufügen.
  5. Nach dem erfolgreichen Hochladen des Blobs kann die Ressource im Speichersimulator nicht angesprochen werden.
z. B. verwendeter Kontoname

, erstellter Containername

, Blobname

. Gemäß den Regeln im Dokument sollte die Ressourcenadresse

sein, aber die zurückgegebenen Daten sind immer

<Error>
  <Code>ResourceNotFound</Code>
  <Message>    The specified resource does not exist. RequestId:9d2d1b08-12b1-4feb-8636-4325eb71b838 Time:2018-04-08T09:14:14.3007800Z
  </Message>
</Error>
Nach dem Login kopieren

Nachdem ich verwandte Artikel gelesen hatte, stellte ich das beim Erstellen des Containers fest Wenn keine Zugriffsberechtigungen (Zugriffsrichtlinien auf Containerebene) festgelegt wurden, ist der externe Zugriff standardmäßig verboten. devstoreaccount1mycontainerudfpbkACL-Berechtigungen (PublicAccessType) sind in drei Ebenen unterteilt: 5ac1a5c82021d.png,
und
. Der Standardwert ist http://127.0.0.1:10000/devstoreaccount1/mycontainerudfpbk/5ac1a5c82021d.png.
Wenn die Ressource extern zugänglich sein muss, setzen Sie sie auf

.

Hängen Sie Ihre eigene gekapselte Azure-Hilfsklasse an

Ich bin auch auf ein kleines Problem beim Festlegen von Berechtigungen gestoßen, ACLBase hat einen Fehler gemeldetCONTAINER_AND_BLOBSBLOBS_ONLYNONENach der Abfrage habe ich Folgendes festgestellt: Nach PHP5. 2. Abstrakt und statisch dürfen nicht gleichzeitig in Methoden verwendet werden. NONE

#只要将ACLBase中的abstract protected static function createAccessPolicy();abstract protected static function validateResourceType($resourceType);#改为protected static function createAccessPolicy(){}protected static function validateResourceType($resourceType){}#即可
Nach dem Login kopieren

BLOBS_ONLYZusammenfassung

Drei Möglichkeiten, den Prozess zu beenden
Static function MicrosoftAzureStorageCommonInternalACLBase::createAccessPolicy() should not be abstract

Verwenden Sie pid, um den Prozess zu beenden

Verwenden Sie pid, um den Prozess zu beenden

  1. taskkill /pid PID /f

    Verwenden Sie den Prozessnamen, um den Prozess zu beenden

  2. ntsd -c q -p PID

    Adresse

  3. Offiziell bereitgestellte SDK-Adressentsd -c q -pn NAME.exe

Private Hilfsadresse

  1. Hinweis: Bevor Sie das Ende erzwingen, klären Sie bitte die Rolle dieses Prozesses

    Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das weitere Studium hilfreich ist Bitte achten Sie auf die chinesische PHP-Website!
  2. Verwandte Empfehlungen:

  3. Einführung in das Hochladen von PHP-Hintergrundbildern funktioniert

Einführung in die Verwendung von Ajax zum Übertragen von Werten zwischen JS und PHP

Das obige ist der detaillierte Inhalt vonPHP-Upload-Dateien mit Azure Storage Blob. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Datei -Downloads in Laravel mit Speicher :: Download ermitteln Datei -Downloads in Laravel mit Speicher :: Download ermitteln Mar 06, 2025 am 02:22 AM

Die Speicher :: Download -Methode des Laravel -Frameworks bietet eine prägnante API für die sichere Bearbeitung von Datei -Downloads beim Verwalten von Abstraktionen des Dateispeichers. Hier ist ein Beispiel für die Verwendung von Storage :: download () im Beispiel -Controller:

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

PHP -Protokollierung: Best Practices für die PHP -Protokollanalyse PHP -Protokollierung: Best Practices für die PHP -Protokollanalyse Mar 10, 2025 pm 02:32 PM

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

So registrieren und verwenden Sie Laravel -Dienstleister So registrieren und verwenden Sie Laravel -Dienstleister Mar 07, 2025 am 01:18 AM

Der Service -Container und die Dienstleister von Laravel sind für seine Architektur von grundlegender Bedeutung. In diesem Artikel werden Servicecontainer untersucht, Details für die Erstellung, Registrierung, Registrierung und die praktische Nutzung mit Beispielen mit Beispielen untersucht. Wir beginnen mit einem Ove

See all articles