Heim > Artikel > Backend-Entwicklung > 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.
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.
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.
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
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.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)
StartStorageEmulator.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/
, 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>
devstoreaccount1
mycontainerudfpbk
ACL-Berechtigungen (PublicAccessType) sind in drei Ebenen unterteilt: 5ac1a5c82021d.png
, http://127.0.0.1:10000/devstoreaccount1/mycontainerudfpbk/5ac1a5c82021d.png
. 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
taskkill /pid PID /f
ntsd -c q -p PID
Offiziell bereitgestellte SDK-Adressentsd -c q -pn NAME.exe
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!