2016-09-13 38 views
0

我使用使用AWS-ec2部署的Django-rest-framework實現了REST API。將圖像從AWS上的Django獲取到Android Glide。 404錯誤

settings.py

MEDIA_URL = '/images/' 
MEDIA_ROOT = os.path.join(BASE_DIR, 'images') 

serializers.py

class PostSerializer(serializers.ModelSerializer): 
    author = serializers.ReadOnlyField(source='author.username') 
    class Meta: 
     model = Post 
     fields = ('author', 'text', 'image') 
    def create(self, validated_data): 
     validated_data['author'] = self.context['request'].user 
     return super(PostSerializer, self).create(validated_data) 

urls.py

router = SimpleRouter() 
router.register(r'posts', views.PostViewSet, base_name='posts') 
urlpatterns = router.urls 

urlpatterns = [ 
    url(r'^', include(router.urls)), 
    ] 

views.py

class PostViewSet(viewsets.ModelViewSet): 
    serializer_class = PostSerializer 
    permission_classes = [IsAuthenticated] 
    queryset = Post.objects.all() 

所以,它返回:

{ 
    "author": "ghdalsrn", 
    "text": "11", 
    "image": "http://ec2-52-78-138-143.ap-northeast-2.compute.amazonaws.com:8000/images/images/Avril_Lavigne_-_00_-_Sk8er_Girl_-_Frontcover_-simplemp3s.jpg" 
    } 

我在我的Android工作室使用"image": "http://ec2-52-78-138-143.ap-northeast-2.compute.amazonaws.com:8000/images/images/Avril_Lavigne_-_00_-_Sk8er_Girl_-_Frontcover_-simplemp3s.jpg"

的Android MainActivity.java

public class MainActivity extends AppCompatActivity { 

    public ImageView mimage; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mimage = (ImageView) findViewById(R.id.iv_image); 

     Glide.with(this) 
       .load("http://ec2-52-78-138-143.ap-northeast-2.compute.amazonaws.com:8000/images/images/Avril_Lavigne_-_00_-_Sk8er_Girl_-_Frontcover_-simplemp3s.jpg") 
       .centerCrop() 
       .into(mimage); 

但是,根據我的膩子消息,

膩子

"GET /images/images/filename_sk8er_Girl.jpg HTTP/1.1" 404 5184

而且我的Android應用程序不顯示任何圖片。

我該如何解決這個問題?

+0

在瀏覽器中加載了您的圖片嗎? – navit

+0

@navit不,它不是。它返回了'Page not found(404)請求方法:GET請求URL:http://ec2-52-78-138-143.ap-northeast-2.compute.amazonaws.com:8000/images/images/Avril_Lavigne_- _00 _-_ Sk8er_Girl _-_ Frontcover_-simplemp3s.jpg' –

+0

您的圖像無法訪問。檢查文件系統上的文件位置,並嘗試找出URL。 – navit

回答

1

您服務器中的文件夾結構錯誤。據this你應該把你靜態文件的結構下是這樣的:

[home folder where manage.py is located]/[module_name]/[images, defined in settings.py]/[module_name]/[image_file_name] 

你的情況:

New/MyModule/images/MyModule/Avril_Lavigne_-_00_‌​-_Sk8er_Girl_-_Front‌​cover_-simplemp3s.jp‌​g 

仔細檢查您的文件夾結構。您可能需要更新數據庫中的文件路徑。

+0

從你的回答中,我給了很多幫助。謝謝 –

+0

不客氣:) – navit