0

Я разрабатываю универсальное приложение для Windows Phone 8.1, но я использую страницу PHP, чтобы узнать некоторые шаблоны из изображения, которое я загрузил на свою службу.Почему после того, как я загрузил изображение в Azure, я не могу получить к нему доступ?

Я обнаружил, что после того, как я загрузил X-образ на Azure, я не могу его использовать. Я использую WebMatrix для разработки моей PHP-страницы, и когда я обновляю ее, она не показывает мне изображения, которые я загрузил, но когда я пытаюсь опубликовать что-то, и я выбираю вариант: «Удалите файлы на удаленном сервере, которые а не на моем компьютере ». Я вижу свои изображения. Это пример моего PHP код:

$uploaddir = getcwd(); 
$uploadfile = $uploaddir . "/" . basename($_FILES['userfile']['name']); 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    chmod($uploadfile, 0755); 
    $Test = new Display($_FILES['userfile']['name']); 
    echo '{"result": "' . $Test->getNumber($_REQUEST['color'], false) . '"}'; 
    //unlink($uploadfile); 
} else { 
    echo '{"result": "-1"}'; 
} 

Я хотел бы знать, что может быть моя ошибка, потому что я не понимаю, почему я могу получить доступ из URL, тоже немного я не могу использовать его, может быть, это то, как я назначил разрешения, но с chmod, он не меняется вообще. Я даже пробовал другие хостинги, и проблема такая же, когда я вхожу в диспетчер файлов, есть только мои файлы PHP, и это не позволяет мне управлять изображением.

Это мой код Windows Phone, чтобы загрузить изображение, если это необходимо:

byte[] ConvertBitmapToByteArray() 
{ 
    WriteableBitmap bmp = bitmap; 

    using (Stream stream = bmp.PixelBuffer.AsStream()) 
    { 
     MemoryStream memoryStream = new MemoryStream(); 
     stream.CopyTo(memoryStream); 
     return memoryStream.ToArray(); 
    } 
} 

public async Task<string> Upload() 
{ 
    try 
    { 
     using (var client = new HttpClient()) 
     { 
      using (var content = 
       new MultipartFormDataContent()) 
      { 
       byte[] data = ConvertBitmapToByteArray(); 

       using (var stream = new InMemoryRandomAccessStream()) 
       { 
        // encoder *outputs* to stream 
        var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream); 

// encoder's input is the bitmap's pixel data 
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, 
    (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96, data); 

await encoder.FlushAsync(); 

content.Add(new StreamContent(stream.AsStream()), "userfile", fileNewImage); 

       using (
        var message = 
         await client.PostAsync("http://xplace.com/uploadtest.php", content)) 
       { 
        var input = await message.Content.ReadAsStringAsync(); 

        return input; 
       } 
      } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     return null; 
    } 
} 

Спасибо за ваши достойные знания и опыт.

ответ

0

Создайте учетную запись хранилища blob и добавьте открытый контейнер. В своем действии, чтобы сохранить файл, сохраните файл в контейнере для хранения blob. Затем вы можете получить доступ к изображению, как и к любому другому изображению.

Вот учебник на Azure: http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/

Кроме того, вы не можете создавать папки в контейнере, но вы можете использовать именование на blobrefname создать идею контейнера. Кроме того, вы можете прикрепить домен к облачному сервису, если хотите, чтобы URL-адрес имел определенный вид.

Надеюсь, это поможет! Cheers

ПРОЧТИТЕ ВАШ ВОПРОС СНОВА - И похоже, что это больше на стороне клиента.

Вот что я обычно делаю, чтобы прикрепить файл к MultipartFormDataContent:

MultipartFormDataContent content = new MultipartFormDataContent(); 

FileInfo info = new FileInfo(currFileLoc);  
string contentMediaType = null; 

//This is a Dictionary<string, string> that takes in the file 
//extension, and returns the media type (e.g. "image/jpeg") 
GlobalVariables.ApprovedMediaTypes.TryGetValue(
           info.Extension.ToLower() 
           , out contentMediaType); 

//If the dictionary doesn't return a result 
//then it's not a supported file type 
if (contentMediaType == null) 
    throw new Exception(
      String.Format("The file \"{0}\" is an unsupported file type." 
          , info.Name)); 

ByteArrayContent currFile = new ByteArrayContent(File.ReadAllByte(currFileLoc)); 

currFile.Headers.ContentType = new MediaTypeWithQualityHeaderValue(contentMediaType); 

content.Add(currFile, currFileLoc, currFileLoc); 

я сделать мой звонок. Возможно, вы нашли еще один вариант с хранилищем blob. Наконец, если вы загружаете большие файлы, вы можете захотеть загрузить их в куски.

~ Cheers

Смежные вопросы