PHP-Upload-Dateien mit Azure Storage Blob
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
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.
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.- Führen Sie cmd erneut aus und finden Sie einen Fehler
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 kopierenStartStorageEmulator.cmd
Nach 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 kopierenEntwicklung starten- Sie können anhand offizieller Beispiele versuchen, Container-, Blob- und Löschfunktionen hinzuzufügen. Nach dem erfolgreichen Hochladen des Blobs kann die Ressource im Speichersimulator nicht angesprochen werden.
, 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>
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.
devstoreaccount1
mycontainerudfpbk
ACL-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_BLOBS
BLOBS_ONLY
NONE
Nach 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){}#即可
BLOBS_ONLY
ZusammenfassungDrei Möglichkeiten, den Prozess zu beendenStatic function MicrosoftAzureStorageCommonInternalACLBase::createAccessPolicy() should not be abstract
Verwenden Sie pid, um den Prozess zu beenden
-
Verwenden Sie den Prozessnamen, um den Prozess zu beendentaskkill /pid PID /f
-
Adressentsd -c q -p PID
Offiziell bereitgestellte SDK-Adressentsd -c q -pn NAME.exe
- 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!
- Verwandte Empfehlungen: 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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

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-

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

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' =>

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:

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

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

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

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
